]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
1fd175d522fd845a95a80f3401afce3f5d818e7e
[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 (root) {
4475 "use strict";
4476
4477 /***** unorm.js *****/
4478
4479 /*
4480 * UnicodeNormalizer 1.0.0
4481 * Copyright (c) 2008 Matsuza
4482 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
4483 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
4484 * $Rev: 13309 $
4485 */
4486
4487 var DEFAULT_FEATURE = [null, 0, {}];
4488 var CACHE_THRESHOLD = 10;
4489 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
4490 var NCount = VCount * TCount; // 588
4491 var SCount = LCount * NCount; // 11172
4492
4493 var UChar = function(cp, feature){
4494 this.codepoint = cp;
4495 this.feature = feature;
4496 };
4497
4498 // Strategies
4499 var cache = {};
4500 var cacheCounter = [];
4501 for (var i = 0; i <= 0xFF; ++i){
4502 cacheCounter[i] = 0;
4503 }
4504
4505 function fromCache(next, cp, needFeature){
4506 var ret = cache[cp];
4507 if(!ret){
4508 ret = next(cp, needFeature);
4509 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
4510 cache[cp] = ret;
4511 }
4512 }
4513 return ret;
4514 }
4515
4516 function fromData(next, cp, needFeature){
4517 var hash = cp & 0xFF00;
4518 var dunit = UChar.udata[hash] || {};
4519 var f = dunit[cp];
4520 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
4521 }
4522 function fromCpOnly(next, cp, needFeature){
4523 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
4524 }
4525 function fromRuleBasedJamo(next, cp, needFeature){
4526 var j;
4527 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
4528 return next(cp, needFeature);
4529 }
4530 if(LBase <= cp && cp < LBase + LCount){
4531 var c = {};
4532 var base = (cp - LBase) * VCount;
4533 for (j = 0; j < VCount; ++j){
4534 c[VBase + j] = SBase + TCount * (j + base);
4535 }
4536 return new UChar(cp, [,,c]);
4537 }
4538
4539 var SIndex = cp - SBase;
4540 var TIndex = SIndex % TCount;
4541 var feature = [];
4542 if(TIndex !== 0){
4543 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
4544 } else {
4545 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
4546 feature[2] = {};
4547 for (j = 1; j < TCount; ++j){
4548 feature[2][TBase + j] = cp + j;
4549 }
4550 }
4551 return new UChar(cp, feature);
4552 }
4553 function fromCpFilter(next, cp, needFeature){
4554 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
4555 }
4556
4557 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
4558
4559 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
4560 return function (cp, needFeature) {
4561 return strategy(next, cp, needFeature);
4562 };
4563 }, null);
4564
4565 UChar.isHighSurrogate = function(cp){
4566 return cp >= 0xD800 && cp <= 0xDBFF;
4567 };
4568 UChar.isLowSurrogate = function(cp){
4569 return cp >= 0xDC00 && cp <= 0xDFFF;
4570 };
4571
4572 UChar.prototype.prepFeature = function(){
4573 if(!this.feature){
4574 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
4575 }
4576 };
4577
4578 UChar.prototype.toString = function(){
4579 if(this.codepoint < 0x10000){
4580 return String.fromCharCode(this.codepoint);
4581 } else {
4582 var x = this.codepoint - 0x10000;
4583 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
4584 }
4585 };
4586
4587 UChar.prototype.getDecomp = function(){
4588 this.prepFeature();
4589 return this.feature[0] || null;
4590 };
4591
4592 UChar.prototype.isCompatibility = function(){
4593 this.prepFeature();
4594 return !!this.feature[1] && (this.feature[1] & (1 << 8));
4595 };
4596 UChar.prototype.isExclude = function(){
4597 this.prepFeature();
4598 return !!this.feature[1] && (this.feature[1] & (1 << 9));
4599 };
4600 UChar.prototype.getCanonicalClass = function(){
4601 this.prepFeature();
4602 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
4603 };
4604 UChar.prototype.getComposite = function(following){
4605 this.prepFeature();
4606 if(!this.feature[2]){
4607 return null;
4608 }
4609 var cp = this.feature[2][following.codepoint];
4610 return cp ? UChar.fromCharCode(cp) : null;
4611 };
4612
4613 var UCharIterator = function(str){
4614 this.str = str;
4615 this.cursor = 0;
4616 };
4617 UCharIterator.prototype.next = function(){
4618 if(!!this.str && this.cursor < this.str.length){
4619 var cp = this.str.charCodeAt(this.cursor++);
4620 var d;
4621 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
4622 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
4623 ++this.cursor;
4624 }
4625 return UChar.fromCharCode(cp);
4626 } else {
4627 this.str = null;
4628 return null;
4629 }
4630 };
4631
4632 var RecursDecompIterator = function(it, cano){
4633 this.it = it;
4634 this.canonical = cano;
4635 this.resBuf = [];
4636 };
4637
4638 RecursDecompIterator.prototype.next = function(){
4639 function recursiveDecomp(cano, uchar){
4640 var decomp = uchar.getDecomp();
4641 if(!!decomp && !(cano && uchar.isCompatibility())){
4642 var ret = [];
4643 for(var i = 0; i < decomp.length; ++i){
4644 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
4645 ret = ret.concat(a);
4646 }
4647 return ret;
4648 } else {
4649 return [uchar];
4650 }
4651 }
4652 if(this.resBuf.length === 0){
4653 var uchar = this.it.next();
4654 if(!uchar){
4655 return null;
4656 }
4657 this.resBuf = recursiveDecomp(this.canonical, uchar);
4658 }
4659 return this.resBuf.shift();
4660 };
4661
4662 var DecompIterator = function(it){
4663 this.it = it;
4664 this.resBuf = [];
4665 };
4666
4667 DecompIterator.prototype.next = function(){
4668 var cc;
4669 if(this.resBuf.length === 0){
4670 do{
4671 var uchar = this.it.next();
4672 if(!uchar){
4673 break;
4674 }
4675 cc = uchar.getCanonicalClass();
4676 var inspt = this.resBuf.length;
4677 if(cc !== 0){
4678 for(; inspt > 0; --inspt){
4679 var uchar2 = this.resBuf[inspt - 1];
4680 var cc2 = uchar2.getCanonicalClass();
4681 if(cc2 <= cc){
4682 break;
4683 }
4684 }
4685 }
4686 this.resBuf.splice(inspt, 0, uchar);
4687 } while(cc !== 0);
4688 }
4689 return this.resBuf.shift();
4690 };
4691
4692 var CompIterator = function(it){
4693 this.it = it;
4694 this.procBuf = [];
4695 this.resBuf = [];
4696 this.lastClass = null;
4697 };
4698
4699 CompIterator.prototype.next = function(){
4700 while(this.resBuf.length === 0){
4701 var uchar = this.it.next();
4702 if(!uchar){
4703 this.resBuf = this.procBuf;
4704 this.procBuf = [];
4705 break;
4706 }
4707 if(this.procBuf.length === 0){
4708 this.lastClass = uchar.getCanonicalClass();
4709 this.procBuf.push(uchar);
4710 } else {
4711 var starter = this.procBuf[0];
4712 var composite = starter.getComposite(uchar);
4713 var cc = uchar.getCanonicalClass();
4714 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
4715 this.procBuf[0] = composite;
4716 } else {
4717 if(cc === 0){
4718 this.resBuf = this.procBuf;
4719 this.procBuf = [];
4720 }
4721 this.lastClass = cc;
4722 this.procBuf.push(uchar);
4723 }
4724 }
4725 }
4726 return this.resBuf.shift();
4727 };
4728
4729 var createIterator = function(mode, str){
4730 switch(mode){
4731 case "NFD":
4732 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
4733 case "NFKD":
4734 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
4735 case "NFC":
4736 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
4737 case "NFKC":
4738 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
4739 }
4740 throw mode + " is invalid";
4741 };
4742 var normalize = function(mode, str){
4743 var it = createIterator(mode, str);
4744 var ret = "";
4745 var uchar;
4746 while(!!(uchar = it.next())){
4747 ret += uchar.toString();
4748 }
4749 return ret;
4750 };
4751
4752 /* API functions */
4753 function nfd(str){
4754 return normalize("NFD", str);
4755 }
4756
4757 function nfkd(str){
4758 return normalize("NFKD", str);
4759 }
4760
4761 function nfc(str){
4762 return normalize("NFC", str);
4763 }
4764
4765 function nfkc(str){
4766 return normalize("NFKC", str);
4767 }
4768
4769 /* Unicode data */
4770 UChar.udata={
4771 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]]},
4772 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]},
4773 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]},
4774 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]},
4775 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]]},
4776 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]},
4777 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]},
4778 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]},
4779 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]},
4780 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]},
4781 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]},
4782 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]},
4783 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]},
4784 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]]},
4785 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]},
4786 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]},
4787 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]},
4788 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]},
4789 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
4790 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]},
4791 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
4792 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
4793 5632:{71231:[,9],71350:[,9],71351:[,7]},
4794 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
4795 6144:{6313:[,228]},
4796 6400:{6457:[,222],6458:[,230],6459:[,220]},
4797 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]},
4798 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]},
4799 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]},
4800 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]},
4801 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]]},
4802 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}]},
4803 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]},
4804 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}]},
4805 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]]},
4806 8960:{9001:[[12296]],9002:[[12297]]},
4807 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]},
4808 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]},
4809 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
4810 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]},
4811 11776:{11935:[[27597],256],12019:[[40863],256]},
4812 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]},
4813 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]},
4814 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]},
4815 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]},
4816 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]},
4817 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
4818 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
4819 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]},
4820 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
4821 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]},
4822 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
4823 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
4824 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
4825 48128:{113822:[,1]},
4826 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]},
4827 53760:{119362:[,230],119363:[,230],119364:[,230]},
4828 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]},
4829 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]},
4830 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]},
4831 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]},
4832 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
4833 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]},
4834 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]},
4835 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]},
4836 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]]},
4837 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]]},
4838 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]]},
4839 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]},
4840 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]},
4841 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]},
4842 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]},
4843 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]}
4844
4845 };
4846
4847 /***** Module to export */
4848 var unorm = {
4849 nfc: nfc,
4850 nfd: nfd,
4851 nfkc: nfkc,
4852 nfkd: nfkd
4853 };
4854
4855 /*globals module:true,define:true*/
4856
4857 // CommonJS
4858 if (typeof module === "object") {
4859 module.exports = unorm;
4860
4861 // AMD
4862 } else if (typeof define === "function" && define.amd) {
4863 define("unorm", function () {
4864 return unorm;
4865 });
4866
4867 // Global
4868 } else {
4869 root.unorm = unorm;
4870 }
4871
4872 /***** Export as shim for String::normalize method *****/
4873 /*
4874 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
4875
4876 21.1.3.12 String.prototype.normalize(form="NFC")
4877 When the normalize method is called with one argument form, the following steps are taken:
4878
4879 1. Let O be CheckObjectCoercible(this value).
4880 2. Let S be ToString(O).
4881 3. ReturnIfAbrupt(S).
4882 4. If form is not provided or undefined let form be "NFC".
4883 5. Let f be ToString(form).
4884 6. ReturnIfAbrupt(f).
4885 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
4886 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.
4887 9. Return ns.
4888
4889 The length property of the normalize method is 0.
4890
4891 *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.
4892 */
4893 unorm.shimApplied = false;
4894
4895 if (!String.prototype.normalize) {
4896 String.prototype.normalize = function(form) {
4897 var str = "" + this;
4898 form = form === undefined ? "NFC" : form;
4899
4900 if (form === "NFC") {
4901 return unorm.nfc(str);
4902 } else if (form === "NFD") {
4903 return unorm.nfd(str);
4904 } else if (form === "NFKC") {
4905 return unorm.nfkc(str);
4906 } else if (form === "NFKD") {
4907 return unorm.nfkd(str);
4908 } else {
4909 throw new RangeError("Invalid normalization form: " + form);
4910 }
4911 };
4912
4913 unorm.shimApplied = true;
4914 }
4915 }(this));
4916 </script>
4917 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
4918 !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)
4919 },_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))
4920 },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});
4921 </script>
4922 <script>/*!
4923 * Bootstrap v3.2.0 (http://getbootstrap.com)
4924 * Copyright 2011-2014 Twitter, Inc.
4925 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4926 */
4927 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>
4928 <script>(function() {
4929 'use strict';
4930
4931 /**
4932 * Extend an Object with another Object's properties.
4933 *
4934 * The source objects are specified as additional arguments.
4935 *
4936 * @param dst Object the object to extend.
4937 *
4938 * @return Object the final object.
4939 */
4940 var _extend = function(dst) {
4941 var sources = Array.prototype.slice.call(arguments, 1);
4942 for (var i=0; i<sources.length; ++i) {
4943 var src = sources[i];
4944 for (var p in src) {
4945 if (src.hasOwnProperty(p)) dst[p] = src[p];
4946 }
4947 }
4948 return dst;
4949 };
4950
4951
4952 /**
4953 * Defer execution of given function.
4954 * @param {Function} func
4955 */
4956 var _defer = function(func) {
4957 if (typeof setImmediate === 'function') {
4958 return setImmediate(func);
4959 } else {
4960 return setTimeout(func, 0);
4961 }
4962 };
4963
4964 /**
4965 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
4966 */
4967 var Levenshtein = {
4968 /**
4969 * Calculate levenshtein distance of the two strings.
4970 *
4971 * @param str1 String the first string.
4972 * @param str2 String the second string.
4973 * @return Integer the levenshtein distance (0 and above).
4974 */
4975 get: function(str1, str2) {
4976 // base cases
4977 if (str1 === str2) return 0;
4978 if (str1.length === 0) return str2.length;
4979 if (str2.length === 0) return str1.length;
4980
4981 // two rows
4982 var prevRow = new Array(str2.length + 1),
4983 curCol, nextCol, i, j, tmp;
4984
4985 // initialise previous row
4986 for (i=0; i<prevRow.length; ++i) {
4987 prevRow[i] = i;
4988 }
4989
4990 // calculate current row distance from previous row
4991 for (i=0; i<str1.length; ++i) {
4992 nextCol = i + 1;
4993
4994 for (j=0; j<str2.length; ++j) {
4995 curCol = nextCol;
4996
4997 // substution
4998 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
4999 // insertion
5000 tmp = curCol + 1;
5001 if (nextCol > tmp) {
5002 nextCol = tmp;
5003 }
5004 // deletion
5005 tmp = prevRow[j + 1] + 1;
5006 if (nextCol > tmp) {
5007 nextCol = tmp;
5008 }
5009
5010 // copy current col value into previous (in preparation for next iteration)
5011 prevRow[j] = curCol;
5012 }
5013
5014 // copy last col value into previous (in preparation for next iteration)
5015 prevRow[j] = nextCol;
5016 }
5017
5018 return nextCol;
5019 },
5020
5021 /**
5022 * Asynchronously calculate levenshtein distance of the two strings.
5023 *
5024 * @param str1 String the first string.
5025 * @param str2 String the second string.
5026 * @param cb Function callback function with signature: function(Error err, int distance)
5027 * @param [options] Object additional options.
5028 * @param [options.progress] Function progress callback with signature: function(percentComplete)
5029 */
5030 getAsync: function(str1, str2, cb, options) {
5031 options = _extend({}, {
5032 progress: null
5033 }, options);
5034
5035 // base cases
5036 if (str1 === str2) return cb(null, 0);
5037 if (str1.length === 0) return cb(null, str2.length);
5038 if (str2.length === 0) return cb(null, str1.length);
5039
5040 // two rows
5041 var prevRow = new Array(str2.length + 1),
5042 curCol, nextCol,
5043 i, j, tmp,
5044 startTime, currentTime;
5045
5046 // initialise previous row
5047 for (i=0; i<prevRow.length; ++i) {
5048 prevRow[i] = i;
5049 }
5050
5051 nextCol = 1;
5052 i = 0;
5053 j = -1;
5054
5055 var __calculate = function() {
5056 // reset timer
5057 startTime = new Date().valueOf();
5058 currentTime = startTime;
5059
5060 // keep going until one second has elapsed
5061 while (currentTime - startTime < 1000) {
5062 // reached end of current row?
5063 if (str2.length <= (++j)) {
5064 // copy current into previous (in preparation for next iteration)
5065 prevRow[j] = nextCol;
5066
5067 // if already done all chars
5068 if (str1.length <= (++i)) {
5069 return cb(null, nextCol);
5070 }
5071 // else if we have more left to do
5072 else {
5073 nextCol = i + 1;
5074 j = 0;
5075 }
5076 }
5077
5078 // calculation
5079 curCol = nextCol;
5080
5081 // substution
5082 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
5083 // insertion
5084 tmp = curCol + 1;
5085 if (nextCol > tmp) {
5086 nextCol = tmp;
5087 }
5088 // deletion
5089 tmp = prevRow[j + 1] + 1;
5090 if (nextCol > tmp) {
5091 nextCol = tmp;
5092 }
5093
5094 // copy current into previous (in preparation for next iteration)
5095 prevRow[j] = curCol;
5096
5097 // get current time
5098 currentTime = new Date().valueOf();
5099 }
5100
5101 // send a progress update?
5102 if (null !== options.progress) {
5103 try {
5104 options.progress.call(null, (i * 100.0/ str1.length));
5105 } catch (err) {
5106 return cb('Progress callback: ' + err.toString());
5107 }
5108 }
5109
5110 // next iteration
5111 _defer(__calculate);
5112 };
5113
5114 __calculate();
5115 }
5116
5117 };
5118
5119 // amd
5120 if (typeof define !== "undefined" && define !== null && define.amd) {
5121 define(function() {
5122 return Levenshtein;
5123 });
5124 }
5125 // commonjs
5126 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
5127 module.exports = Levenshtein;
5128 }
5129 // web worker
5130 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
5131 self.Levenshtein = Levenshtein;
5132 }
5133 // browser main thread
5134 else if (typeof window !== "undefined" && window !== null) {
5135 window.Levenshtein = Levenshtein;
5136 }
5137 }());
5138
5139 </script>
5140 <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},
5141 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;
5142 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-
5143 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]=
5144 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},
5145 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=
5146 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-
5147 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,
5148 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=
5149 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&&
5150 (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,
5151 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)-
5152 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:"+
5153 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:"+
5154 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+
5155 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),
5156 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>
5157 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],
5158 [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,
5159 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,
5160 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,
5161 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,
5162 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,
5163 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*
5164 (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,
5165 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),
5166 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",
5167 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
5168 </script>
5169 <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){
5170 // (public) Constructor
5171 function BigInteger(a, b, c) {
5172 if (!(this instanceof BigInteger))
5173 return new BigInteger(a, b, c)
5174
5175 if (a != null) {
5176 if ("number" == typeof a) this.fromNumber(a, b, c)
5177 else if (b == null && "string" != typeof a) this.fromString(a, 256)
5178 else this.fromString(a, b)
5179 }
5180 }
5181
5182 var proto = BigInteger.prototype
5183
5184 // duck-typed isBigInteger
5185 proto.__bigi = require('../package.json').version
5186 BigInteger.isBigInteger = function (obj, check_ver) {
5187 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
5188 }
5189
5190 // Bits per digit
5191 var dbits
5192
5193 // am: Compute w_j += (x*this_i), propagate carries,
5194 // c is initial carry, returns final carry.
5195 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
5196 // We need to select the fastest one that works in this environment.
5197
5198 // am1: use a single mult and divide to get the high bits,
5199 // max digit bits should be 26 because
5200 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
5201 function am1(i, x, w, j, c, n) {
5202 while (--n >= 0) {
5203 var v = x * this[i++] + w[j] + c
5204 c = Math.floor(v / 0x4000000)
5205 w[j++] = v & 0x3ffffff
5206 }
5207 return c
5208 }
5209 // am2 avoids a big mult-and-extract completely.
5210 // Max digit bits should be <= 30 because we do bitwise ops
5211 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
5212 function am2(i, x, w, j, c, n) {
5213 var xl = x & 0x7fff,
5214 xh = x >> 15
5215 while (--n >= 0) {
5216 var l = this[i] & 0x7fff
5217 var h = this[i++] >> 15
5218 var m = xh * l + h * xl
5219 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
5220 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
5221 w[j++] = l & 0x3fffffff
5222 }
5223 return c
5224 }
5225 // Alternately, set max digit bits to 28 since some
5226 // browsers slow down when dealing with 32-bit numbers.
5227 function am3(i, x, w, j, c, n) {
5228 var xl = x & 0x3fff,
5229 xh = x >> 14
5230 while (--n >= 0) {
5231 var l = this[i] & 0x3fff
5232 var h = this[i++] >> 14
5233 var m = xh * l + h * xl
5234 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
5235 c = (l >> 28) + (m >> 14) + xh * h
5236 w[j++] = l & 0xfffffff
5237 }
5238 return c
5239 }
5240
5241 // wtf?
5242 BigInteger.prototype.am = am1
5243 dbits = 26
5244
5245 BigInteger.prototype.DB = dbits
5246 BigInteger.prototype.DM = ((1 << dbits) - 1)
5247 var DV = BigInteger.prototype.DV = (1 << dbits)
5248
5249 var BI_FP = 52
5250 BigInteger.prototype.FV = Math.pow(2, BI_FP)
5251 BigInteger.prototype.F1 = BI_FP - dbits
5252 BigInteger.prototype.F2 = 2 * dbits - BI_FP
5253
5254 // Digit conversions
5255 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
5256 var BI_RC = new Array()
5257 var rr, vv
5258 rr = "0".charCodeAt(0)
5259 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
5260 rr = "a".charCodeAt(0)
5261 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
5262 rr = "A".charCodeAt(0)
5263 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
5264
5265 function int2char(n) {
5266 return BI_RM.charAt(n)
5267 }
5268
5269 function intAt(s, i) {
5270 var c = BI_RC[s.charCodeAt(i)]
5271 return (c == null) ? -1 : c
5272 }
5273
5274 // (protected) copy this to r
5275 function bnpCopyTo(r) {
5276 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
5277 r.t = this.t
5278 r.s = this.s
5279 }
5280
5281 // (protected) set from integer value x, -DV <= x < DV
5282 function bnpFromInt(x) {
5283 this.t = 1
5284 this.s = (x < 0) ? -1 : 0
5285 if (x > 0) this[0] = x
5286 else if (x < -1) this[0] = x + DV
5287 else this.t = 0
5288 }
5289
5290 // return bigint initialized to value
5291 function nbv(i) {
5292 var r = new BigInteger()
5293 r.fromInt(i)
5294 return r
5295 }
5296
5297 // (protected) set from string and radix
5298 function bnpFromString(s, b) {
5299 var self = this
5300
5301 var k
5302 if (b == 16) k = 4
5303 else if (b == 8) k = 3
5304 else if (b == 256) k = 8; // byte array
5305 else if (b == 2) k = 1
5306 else if (b == 32) k = 5
5307 else if (b == 4) k = 2
5308 else {
5309 self.fromRadix(s, b)
5310 return
5311 }
5312 self.t = 0
5313 self.s = 0
5314 var i = s.length,
5315 mi = false,
5316 sh = 0
5317 while (--i >= 0) {
5318 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
5319 if (x < 0) {
5320 if (s.charAt(i) == "-") mi = true
5321 continue
5322 }
5323 mi = false
5324 if (sh == 0)
5325 self[self.t++] = x
5326 else if (sh + k > self.DB) {
5327 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
5328 self[self.t++] = (x >> (self.DB - sh))
5329 } else
5330 self[self.t - 1] |= x << sh
5331 sh += k
5332 if (sh >= self.DB) sh -= self.DB
5333 }
5334 if (k == 8 && (s[0] & 0x80) != 0) {
5335 self.s = -1
5336 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
5337 }
5338 self.clamp()
5339 if (mi) BigInteger.ZERO.subTo(self, self)
5340 }
5341
5342 // (protected) clamp off excess high words
5343 function bnpClamp() {
5344 var c = this.s & this.DM
5345 while (this.t > 0 && this[this.t - 1] == c)--this.t
5346 }
5347
5348 // (public) return string representation in given radix
5349 function bnToString(b) {
5350 var self = this
5351 if (self.s < 0) return "-" + self.negate()
5352 .toString(b)
5353 var k
5354 if (b == 16) k = 4
5355 else if (b == 8) k = 3
5356 else if (b == 2) k = 1
5357 else if (b == 32) k = 5
5358 else if (b == 4) k = 2
5359 else return self.toRadix(b)
5360 var km = (1 << k) - 1,
5361 d, m = false,
5362 r = "",
5363 i = self.t
5364 var p = self.DB - (i * self.DB) % k
5365 if (i-- > 0) {
5366 if (p < self.DB && (d = self[i] >> p) > 0) {
5367 m = true
5368 r = int2char(d)
5369 }
5370 while (i >= 0) {
5371 if (p < k) {
5372 d = (self[i] & ((1 << p) - 1)) << (k - p)
5373 d |= self[--i] >> (p += self.DB - k)
5374 } else {
5375 d = (self[i] >> (p -= k)) & km
5376 if (p <= 0) {
5377 p += self.DB
5378 --i
5379 }
5380 }
5381 if (d > 0) m = true
5382 if (m) r += int2char(d)
5383 }
5384 }
5385 return m ? r : "0"
5386 }
5387
5388 // (public) -this
5389 function bnNegate() {
5390 var r = new BigInteger()
5391 BigInteger.ZERO.subTo(this, r)
5392 return r
5393 }
5394
5395 // (public) |this|
5396 function bnAbs() {
5397 return (this.s < 0) ? this.negate() : this
5398 }
5399
5400 // (public) return + if this > a, - if this < a, 0 if equal
5401 function bnCompareTo(a) {
5402 var r = this.s - a.s
5403 if (r != 0) return r
5404 var i = this.t
5405 r = i - a.t
5406 if (r != 0) return (this.s < 0) ? -r : r
5407 while (--i >= 0)
5408 if ((r = this[i] - a[i]) != 0) return r
5409 return 0
5410 }
5411
5412 // returns bit length of the integer x
5413 function nbits(x) {
5414 var r = 1,
5415 t
5416 if ((t = x >>> 16) != 0) {
5417 x = t
5418 r += 16
5419 }
5420 if ((t = x >> 8) != 0) {
5421 x = t
5422 r += 8
5423 }
5424 if ((t = x >> 4) != 0) {
5425 x = t
5426 r += 4
5427 }
5428 if ((t = x >> 2) != 0) {
5429 x = t
5430 r += 2
5431 }
5432 if ((t = x >> 1) != 0) {
5433 x = t
5434 r += 1
5435 }
5436 return r
5437 }
5438
5439 // (public) return the number of bits in "this"
5440 function bnBitLength() {
5441 if (this.t <= 0) return 0
5442 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
5443 }
5444
5445 // (public) return the number of bytes in "this"
5446 function bnByteLength() {
5447 return this.bitLength() >> 3
5448 }
5449
5450 // (protected) r = this << n*DB
5451 function bnpDLShiftTo(n, r) {
5452 var i
5453 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
5454 for (i = n - 1; i >= 0; --i) r[i] = 0
5455 r.t = this.t + n
5456 r.s = this.s
5457 }
5458
5459 // (protected) r = this >> n*DB
5460 function bnpDRShiftTo(n, r) {
5461 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
5462 r.t = Math.max(this.t - n, 0)
5463 r.s = this.s
5464 }
5465
5466 // (protected) r = this << n
5467 function bnpLShiftTo(n, r) {
5468 var self = this
5469 var bs = n % self.DB
5470 var cbs = self.DB - bs
5471 var bm = (1 << cbs) - 1
5472 var ds = Math.floor(n / self.DB),
5473 c = (self.s << bs) & self.DM,
5474 i
5475 for (i = self.t - 1; i >= 0; --i) {
5476 r[i + ds + 1] = (self[i] >> cbs) | c
5477 c = (self[i] & bm) << bs
5478 }
5479 for (i = ds - 1; i >= 0; --i) r[i] = 0
5480 r[ds] = c
5481 r.t = self.t + ds + 1
5482 r.s = self.s
5483 r.clamp()
5484 }
5485
5486 // (protected) r = this >> n
5487 function bnpRShiftTo(n, r) {
5488 var self = this
5489 r.s = self.s
5490 var ds = Math.floor(n / self.DB)
5491 if (ds >= self.t) {
5492 r.t = 0
5493 return
5494 }
5495 var bs = n % self.DB
5496 var cbs = self.DB - bs
5497 var bm = (1 << bs) - 1
5498 r[0] = self[ds] >> bs
5499 for (var i = ds + 1; i < self.t; ++i) {
5500 r[i - ds - 1] |= (self[i] & bm) << cbs
5501 r[i - ds] = self[i] >> bs
5502 }
5503 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
5504 r.t = self.t - ds
5505 r.clamp()
5506 }
5507
5508 // (protected) r = this - a
5509 function bnpSubTo(a, r) {
5510 var self = this
5511 var i = 0,
5512 c = 0,
5513 m = Math.min(a.t, self.t)
5514 while (i < m) {
5515 c += self[i] - a[i]
5516 r[i++] = c & self.DM
5517 c >>= self.DB
5518 }
5519 if (a.t < self.t) {
5520 c -= a.s
5521 while (i < self.t) {
5522 c += self[i]
5523 r[i++] = c & self.DM
5524 c >>= self.DB
5525 }
5526 c += self.s
5527 } else {
5528 c += self.s
5529 while (i < a.t) {
5530 c -= a[i]
5531 r[i++] = c & self.DM
5532 c >>= self.DB
5533 }
5534 c -= a.s
5535 }
5536 r.s = (c < 0) ? -1 : 0
5537 if (c < -1) r[i++] = self.DV + c
5538 else if (c > 0) r[i++] = c
5539 r.t = i
5540 r.clamp()
5541 }
5542
5543 // (protected) r = this * a, r != this,a (HAC 14.12)
5544 // "this" should be the larger one if appropriate.
5545 function bnpMultiplyTo(a, r) {
5546 var x = this.abs(),
5547 y = a.abs()
5548 var i = x.t
5549 r.t = i + y.t
5550 while (--i >= 0) r[i] = 0
5551 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
5552 r.s = 0
5553 r.clamp()
5554 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
5555 }
5556
5557 // (protected) r = this^2, r != this (HAC 14.16)
5558 function bnpSquareTo(r) {
5559 var x = this.abs()
5560 var i = r.t = 2 * x.t
5561 while (--i >= 0) r[i] = 0
5562 for (i = 0; i < x.t - 1; ++i) {
5563 var c = x.am(i, x[i], r, 2 * i, 0, 1)
5564 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
5565 r[i + x.t] -= x.DV
5566 r[i + x.t + 1] = 1
5567 }
5568 }
5569 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
5570 r.s = 0
5571 r.clamp()
5572 }
5573
5574 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
5575 // r != q, this != m. q or r may be null.
5576 function bnpDivRemTo(m, q, r) {
5577 var self = this
5578 var pm = m.abs()
5579 if (pm.t <= 0) return
5580 var pt = self.abs()
5581 if (pt.t < pm.t) {
5582 if (q != null) q.fromInt(0)
5583 if (r != null) self.copyTo(r)
5584 return
5585 }
5586 if (r == null) r = new BigInteger()
5587 var y = new BigInteger(),
5588 ts = self.s,
5589 ms = m.s
5590 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
5591 if (nsh > 0) {
5592 pm.lShiftTo(nsh, y)
5593 pt.lShiftTo(nsh, r)
5594 } else {
5595 pm.copyTo(y)
5596 pt.copyTo(r)
5597 }
5598 var ys = y.t
5599 var y0 = y[ys - 1]
5600 if (y0 == 0) return
5601 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
5602 var d1 = self.FV / yt,
5603 d2 = (1 << self.F1) / yt,
5604 e = 1 << self.F2
5605 var i = r.t,
5606 j = i - ys,
5607 t = (q == null) ? new BigInteger() : q
5608 y.dlShiftTo(j, t)
5609 if (r.compareTo(t) >= 0) {
5610 r[r.t++] = 1
5611 r.subTo(t, r)
5612 }
5613 BigInteger.ONE.dlShiftTo(ys, t)
5614 t.subTo(y, y); // "negative" y so we can replace sub with am later
5615 while (y.t < ys) y[y.t++] = 0
5616 while (--j >= 0) {
5617 // Estimate quotient digit
5618 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
5619 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
5620 y.dlShiftTo(j, t)
5621 r.subTo(t, r)
5622 while (r[i] < --qd) r.subTo(t, r)
5623 }
5624 }
5625 if (q != null) {
5626 r.drShiftTo(ys, q)
5627 if (ts != ms) BigInteger.ZERO.subTo(q, q)
5628 }
5629 r.t = ys
5630 r.clamp()
5631 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
5632 if (ts < 0) BigInteger.ZERO.subTo(r, r)
5633 }
5634
5635 // (public) this mod a
5636 function bnMod(a) {
5637 var r = new BigInteger()
5638 this.abs()
5639 .divRemTo(a, null, r)
5640 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
5641 return r
5642 }
5643
5644 // Modular reduction using "classic" algorithm
5645 function Classic(m) {
5646 this.m = m
5647 }
5648
5649 function cConvert(x) {
5650 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
5651 else return x
5652 }
5653
5654 function cRevert(x) {
5655 return x
5656 }
5657
5658 function cReduce(x) {
5659 x.divRemTo(this.m, null, x)
5660 }
5661
5662 function cMulTo(x, y, r) {
5663 x.multiplyTo(y, r)
5664 this.reduce(r)
5665 }
5666
5667 function cSqrTo(x, r) {
5668 x.squareTo(r)
5669 this.reduce(r)
5670 }
5671
5672 Classic.prototype.convert = cConvert
5673 Classic.prototype.revert = cRevert
5674 Classic.prototype.reduce = cReduce
5675 Classic.prototype.mulTo = cMulTo
5676 Classic.prototype.sqrTo = cSqrTo
5677
5678 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
5679 // justification:
5680 // xy == 1 (mod m)
5681 // xy = 1+km
5682 // xy(2-xy) = (1+km)(1-km)
5683 // x[y(2-xy)] = 1-k^2m^2
5684 // x[y(2-xy)] == 1 (mod m^2)
5685 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
5686 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
5687 // JS multiply "overflows" differently from C/C++, so care is needed here.
5688 function bnpInvDigit() {
5689 if (this.t < 1) return 0
5690 var x = this[0]
5691 if ((x & 1) == 0) return 0
5692 var y = x & 3; // y == 1/x mod 2^2
5693 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
5694 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
5695 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
5696 // last step - calculate inverse mod DV directly
5697 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
5698 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
5699 // we really want the negative inverse, and -DV < y < DV
5700 return (y > 0) ? this.DV - y : -y
5701 }
5702
5703 // Montgomery reduction
5704 function Montgomery(m) {
5705 this.m = m
5706 this.mp = m.invDigit()
5707 this.mpl = this.mp & 0x7fff
5708 this.mph = this.mp >> 15
5709 this.um = (1 << (m.DB - 15)) - 1
5710 this.mt2 = 2 * m.t
5711 }
5712
5713 // xR mod m
5714 function montConvert(x) {
5715 var r = new BigInteger()
5716 x.abs()
5717 .dlShiftTo(this.m.t, r)
5718 r.divRemTo(this.m, null, r)
5719 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
5720 return r
5721 }
5722
5723 // x/R mod m
5724 function montRevert(x) {
5725 var r = new BigInteger()
5726 x.copyTo(r)
5727 this.reduce(r)
5728 return r
5729 }
5730
5731 // x = x/R mod m (HAC 14.32)
5732 function montReduce(x) {
5733 while (x.t <= this.mt2) // pad x so am has enough room later
5734 x[x.t++] = 0
5735 for (var i = 0; i < this.m.t; ++i) {
5736 // faster way of calculating u0 = x[i]*mp mod DV
5737 var j = x[i] & 0x7fff
5738 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
5739 // use am to combine the multiply-shift-add into one call
5740 j = i + this.m.t
5741 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
5742 // propagate carry
5743 while (x[j] >= x.DV) {
5744 x[j] -= x.DV
5745 x[++j]++
5746 }
5747 }
5748 x.clamp()
5749 x.drShiftTo(this.m.t, x)
5750 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
5751 }
5752
5753 // r = "x^2/R mod m"; x != r
5754 function montSqrTo(x, r) {
5755 x.squareTo(r)
5756 this.reduce(r)
5757 }
5758
5759 // r = "xy/R mod m"; x,y != r
5760 function montMulTo(x, y, r) {
5761 x.multiplyTo(y, r)
5762 this.reduce(r)
5763 }
5764
5765 Montgomery.prototype.convert = montConvert
5766 Montgomery.prototype.revert = montRevert
5767 Montgomery.prototype.reduce = montReduce
5768 Montgomery.prototype.mulTo = montMulTo
5769 Montgomery.prototype.sqrTo = montSqrTo
5770
5771 // (protected) true iff this is even
5772 function bnpIsEven() {
5773 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
5774 }
5775
5776 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
5777 function bnpExp(e, z) {
5778 if (e > 0xffffffff || e < 1) return BigInteger.ONE
5779 var r = new BigInteger(),
5780 r2 = new BigInteger(),
5781 g = z.convert(this),
5782 i = nbits(e) - 1
5783 g.copyTo(r)
5784 while (--i >= 0) {
5785 z.sqrTo(r, r2)
5786 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
5787 else {
5788 var t = r
5789 r = r2
5790 r2 = t
5791 }
5792 }
5793 return z.revert(r)
5794 }
5795
5796 // (public) this^e % m, 0 <= e < 2^32
5797 function bnModPowInt(e, m) {
5798 var z
5799 if (e < 256 || m.isEven()) z = new Classic(m)
5800 else z = new Montgomery(m)
5801 return this.exp(e, z)
5802 }
5803
5804 // protected
5805 proto.copyTo = bnpCopyTo
5806 proto.fromInt = bnpFromInt
5807 proto.fromString = bnpFromString
5808 proto.clamp = bnpClamp
5809 proto.dlShiftTo = bnpDLShiftTo
5810 proto.drShiftTo = bnpDRShiftTo
5811 proto.lShiftTo = bnpLShiftTo
5812 proto.rShiftTo = bnpRShiftTo
5813 proto.subTo = bnpSubTo
5814 proto.multiplyTo = bnpMultiplyTo
5815 proto.squareTo = bnpSquareTo
5816 proto.divRemTo = bnpDivRemTo
5817 proto.invDigit = bnpInvDigit
5818 proto.isEven = bnpIsEven
5819 proto.exp = bnpExp
5820
5821 // public
5822 proto.toString = bnToString
5823 proto.negate = bnNegate
5824 proto.abs = bnAbs
5825 proto.compareTo = bnCompareTo
5826 proto.bitLength = bnBitLength
5827 proto.byteLength = bnByteLength
5828 proto.mod = bnMod
5829 proto.modPowInt = bnModPowInt
5830
5831 // (public)
5832 function bnClone() {
5833 var r = new BigInteger()
5834 this.copyTo(r)
5835 return r
5836 }
5837
5838 // (public) return value as integer
5839 function bnIntValue() {
5840 if (this.s < 0) {
5841 if (this.t == 1) return this[0] - this.DV
5842 else if (this.t == 0) return -1
5843 } else if (this.t == 1) return this[0]
5844 else if (this.t == 0) return 0
5845 // assumes 16 < DB < 32
5846 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
5847 }
5848
5849 // (public) return value as byte
5850 function bnByteValue() {
5851 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
5852 }
5853
5854 // (public) return value as short (assumes DB>=16)
5855 function bnShortValue() {
5856 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
5857 }
5858
5859 // (protected) return x s.t. r^x < DV
5860 function bnpChunkSize(r) {
5861 return Math.floor(Math.LN2 * this.DB / Math.log(r))
5862 }
5863
5864 // (public) 0 if this == 0, 1 if this > 0
5865 function bnSigNum() {
5866 if (this.s < 0) return -1
5867 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
5868 else return 1
5869 }
5870
5871 // (protected) convert to radix string
5872 function bnpToRadix(b) {
5873 if (b == null) b = 10
5874 if (this.signum() == 0 || b < 2 || b > 36) return "0"
5875 var cs = this.chunkSize(b)
5876 var a = Math.pow(b, cs)
5877 var d = nbv(a),
5878 y = new BigInteger(),
5879 z = new BigInteger(),
5880 r = ""
5881 this.divRemTo(d, y, z)
5882 while (y.signum() > 0) {
5883 r = (a + z.intValue())
5884 .toString(b)
5885 .substr(1) + r
5886 y.divRemTo(d, y, z)
5887 }
5888 return z.intValue()
5889 .toString(b) + r
5890 }
5891
5892 // (protected) convert from radix string
5893 function bnpFromRadix(s, b) {
5894 var self = this
5895 self.fromInt(0)
5896 if (b == null) b = 10
5897 var cs = self.chunkSize(b)
5898 var d = Math.pow(b, cs),
5899 mi = false,
5900 j = 0,
5901 w = 0
5902 for (var i = 0; i < s.length; ++i) {
5903 var x = intAt(s, i)
5904 if (x < 0) {
5905 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
5906 continue
5907 }
5908 w = b * w + x
5909 if (++j >= cs) {
5910 self.dMultiply(d)
5911 self.dAddOffset(w, 0)
5912 j = 0
5913 w = 0
5914 }
5915 }
5916 if (j > 0) {
5917 self.dMultiply(Math.pow(b, j))
5918 self.dAddOffset(w, 0)
5919 }
5920 if (mi) BigInteger.ZERO.subTo(self, self)
5921 }
5922
5923 // (protected) alternate constructor
5924 function bnpFromNumber(a, b, c) {
5925 var self = this
5926 if ("number" == typeof b) {
5927 // new BigInteger(int,int,RNG)
5928 if (a < 2) self.fromInt(1)
5929 else {
5930 self.fromNumber(a, c)
5931 if (!self.testBit(a - 1)) // force MSB set
5932 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
5933 if (self.isEven()) self.dAddOffset(1, 0); // force odd
5934 while (!self.isProbablePrime(b)) {
5935 self.dAddOffset(2, 0)
5936 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
5937 }
5938 }
5939 } else {
5940 // new BigInteger(int,RNG)
5941 var x = new Array(),
5942 t = a & 7
5943 x.length = (a >> 3) + 1
5944 b.nextBytes(x)
5945 if (t > 0) x[0] &= ((1 << t) - 1)
5946 else x[0] = 0
5947 self.fromString(x, 256)
5948 }
5949 }
5950
5951 // (public) convert to bigendian byte array
5952 function bnToByteArray() {
5953 var self = this
5954 var i = self.t,
5955 r = new Array()
5956 r[0] = self.s
5957 var p = self.DB - (i * self.DB) % 8,
5958 d, k = 0
5959 if (i-- > 0) {
5960 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
5961 r[k++] = d | (self.s << (self.DB - p))
5962 while (i >= 0) {
5963 if (p < 8) {
5964 d = (self[i] & ((1 << p) - 1)) << (8 - p)
5965 d |= self[--i] >> (p += self.DB - 8)
5966 } else {
5967 d = (self[i] >> (p -= 8)) & 0xff
5968 if (p <= 0) {
5969 p += self.DB
5970 --i
5971 }
5972 }
5973 if ((d & 0x80) != 0) d |= -256
5974 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
5975 if (k > 0 || d != self.s) r[k++] = d
5976 }
5977 }
5978 return r
5979 }
5980
5981 function bnEquals(a) {
5982 return (this.compareTo(a) == 0)
5983 }
5984
5985 function bnMin(a) {
5986 return (this.compareTo(a) < 0) ? this : a
5987 }
5988
5989 function bnMax(a) {
5990 return (this.compareTo(a) > 0) ? this : a
5991 }
5992
5993 // (protected) r = this op a (bitwise)
5994 function bnpBitwiseTo(a, op, r) {
5995 var self = this
5996 var i, f, m = Math.min(a.t, self.t)
5997 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
5998 if (a.t < self.t) {
5999 f = a.s & self.DM
6000 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
6001 r.t = self.t
6002 } else {
6003 f = self.s & self.DM
6004 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
6005 r.t = a.t
6006 }
6007 r.s = op(self.s, a.s)
6008 r.clamp()
6009 }
6010
6011 // (public) this & a
6012 function op_and(x, y) {
6013 return x & y
6014 }
6015
6016 function bnAnd(a) {
6017 var r = new BigInteger()
6018 this.bitwiseTo(a, op_and, r)
6019 return r
6020 }
6021
6022 // (public) this | a
6023 function op_or(x, y) {
6024 return x | y
6025 }
6026
6027 function bnOr(a) {
6028 var r = new BigInteger()
6029 this.bitwiseTo(a, op_or, r)
6030 return r
6031 }
6032
6033 // (public) this ^ a
6034 function op_xor(x, y) {
6035 return x ^ y
6036 }
6037
6038 function bnXor(a) {
6039 var r = new BigInteger()
6040 this.bitwiseTo(a, op_xor, r)
6041 return r
6042 }
6043
6044 // (public) this & ~a
6045 function op_andnot(x, y) {
6046 return x & ~y
6047 }
6048
6049 function bnAndNot(a) {
6050 var r = new BigInteger()
6051 this.bitwiseTo(a, op_andnot, r)
6052 return r
6053 }
6054
6055 // (public) ~this
6056 function bnNot() {
6057 var r = new BigInteger()
6058 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
6059 r.t = this.t
6060 r.s = ~this.s
6061 return r
6062 }
6063
6064 // (public) this << n
6065 function bnShiftLeft(n) {
6066 var r = new BigInteger()
6067 if (n < 0) this.rShiftTo(-n, r)
6068 else this.lShiftTo(n, r)
6069 return r
6070 }
6071
6072 // (public) this >> n
6073 function bnShiftRight(n) {
6074 var r = new BigInteger()
6075 if (n < 0) this.lShiftTo(-n, r)
6076 else this.rShiftTo(n, r)
6077 return r
6078 }
6079
6080 // return index of lowest 1-bit in x, x < 2^31
6081 function lbit(x) {
6082 if (x == 0) return -1
6083 var r = 0
6084 if ((x & 0xffff) == 0) {
6085 x >>= 16
6086 r += 16
6087 }
6088 if ((x & 0xff) == 0) {
6089 x >>= 8
6090 r += 8
6091 }
6092 if ((x & 0xf) == 0) {
6093 x >>= 4
6094 r += 4
6095 }
6096 if ((x & 3) == 0) {
6097 x >>= 2
6098 r += 2
6099 }
6100 if ((x & 1) == 0)++r
6101 return r
6102 }
6103
6104 // (public) returns index of lowest 1-bit (or -1 if none)
6105 function bnGetLowestSetBit() {
6106 for (var i = 0; i < this.t; ++i)
6107 if (this[i] != 0) return i * this.DB + lbit(this[i])
6108 if (this.s < 0) return this.t * this.DB
6109 return -1
6110 }
6111
6112 // return number of 1 bits in x
6113 function cbit(x) {
6114 var r = 0
6115 while (x != 0) {
6116 x &= x - 1
6117 ++r
6118 }
6119 return r
6120 }
6121
6122 // (public) return number of set bits
6123 function bnBitCount() {
6124 var r = 0,
6125 x = this.s & this.DM
6126 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
6127 return r
6128 }
6129
6130 // (public) true iff nth bit is set
6131 function bnTestBit(n) {
6132 var j = Math.floor(n / this.DB)
6133 if (j >= this.t) return (this.s != 0)
6134 return ((this[j] & (1 << (n % this.DB))) != 0)
6135 }
6136
6137 // (protected) this op (1<<n)
6138 function bnpChangeBit(n, op) {
6139 var r = BigInteger.ONE.shiftLeft(n)
6140 this.bitwiseTo(r, op, r)
6141 return r
6142 }
6143
6144 // (public) this | (1<<n)
6145 function bnSetBit(n) {
6146 return this.changeBit(n, op_or)
6147 }
6148
6149 // (public) this & ~(1<<n)
6150 function bnClearBit(n) {
6151 return this.changeBit(n, op_andnot)
6152 }
6153
6154 // (public) this ^ (1<<n)
6155 function bnFlipBit(n) {
6156 return this.changeBit(n, op_xor)
6157 }
6158
6159 // (protected) r = this + a
6160 function bnpAddTo(a, r) {
6161 var self = this
6162
6163 var i = 0,
6164 c = 0,
6165 m = Math.min(a.t, self.t)
6166 while (i < m) {
6167 c += self[i] + a[i]
6168 r[i++] = c & self.DM
6169 c >>= self.DB
6170 }
6171 if (a.t < self.t) {
6172 c += a.s
6173 while (i < self.t) {
6174 c += self[i]
6175 r[i++] = c & self.DM
6176 c >>= self.DB
6177 }
6178 c += self.s
6179 } else {
6180 c += self.s
6181 while (i < a.t) {
6182 c += a[i]
6183 r[i++] = c & self.DM
6184 c >>= self.DB
6185 }
6186 c += a.s
6187 }
6188 r.s = (c < 0) ? -1 : 0
6189 if (c > 0) r[i++] = c
6190 else if (c < -1) r[i++] = self.DV + c
6191 r.t = i
6192 r.clamp()
6193 }
6194
6195 // (public) this + a
6196 function bnAdd(a) {
6197 var r = new BigInteger()
6198 this.addTo(a, r)
6199 return r
6200 }
6201
6202 // (public) this - a
6203 function bnSubtract(a) {
6204 var r = new BigInteger()
6205 this.subTo(a, r)
6206 return r
6207 }
6208
6209 // (public) this * a
6210 function bnMultiply(a) {
6211 var r = new BigInteger()
6212 this.multiplyTo(a, r)
6213 return r
6214 }
6215
6216 // (public) this^2
6217 function bnSquare() {
6218 var r = new BigInteger()
6219 this.squareTo(r)
6220 return r
6221 }
6222
6223 // (public) this / a
6224 function bnDivide(a) {
6225 var r = new BigInteger()
6226 this.divRemTo(a, r, null)
6227 return r
6228 }
6229
6230 // (public) this % a
6231 function bnRemainder(a) {
6232 var r = new BigInteger()
6233 this.divRemTo(a, null, r)
6234 return r
6235 }
6236
6237 // (public) [this/a,this%a]
6238 function bnDivideAndRemainder(a) {
6239 var q = new BigInteger(),
6240 r = new BigInteger()
6241 this.divRemTo(a, q, r)
6242 return new Array(q, r)
6243 }
6244
6245 // (protected) this *= n, this >= 0, 1 < n < DV
6246 function bnpDMultiply(n) {
6247 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
6248 ++this.t
6249 this.clamp()
6250 }
6251
6252 // (protected) this += n << w words, this >= 0
6253 function bnpDAddOffset(n, w) {
6254 if (n == 0) return
6255 while (this.t <= w) this[this.t++] = 0
6256 this[w] += n
6257 while (this[w] >= this.DV) {
6258 this[w] -= this.DV
6259 if (++w >= this.t) this[this.t++] = 0
6260 ++this[w]
6261 }
6262 }
6263
6264 // A "null" reducer
6265 function NullExp() {}
6266
6267 function nNop(x) {
6268 return x
6269 }
6270
6271 function nMulTo(x, y, r) {
6272 x.multiplyTo(y, r)
6273 }
6274
6275 function nSqrTo(x, r) {
6276 x.squareTo(r)
6277 }
6278
6279 NullExp.prototype.convert = nNop
6280 NullExp.prototype.revert = nNop
6281 NullExp.prototype.mulTo = nMulTo
6282 NullExp.prototype.sqrTo = nSqrTo
6283
6284 // (public) this^e
6285 function bnPow(e) {
6286 return this.exp(e, new NullExp())
6287 }
6288
6289 // (protected) r = lower n words of "this * a", a.t <= n
6290 // "this" should be the larger one if appropriate.
6291 function bnpMultiplyLowerTo(a, n, r) {
6292 var i = Math.min(this.t + a.t, n)
6293 r.s = 0; // assumes a,this >= 0
6294 r.t = i
6295 while (i > 0) r[--i] = 0
6296 var j
6297 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
6298 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
6299 r.clamp()
6300 }
6301
6302 // (protected) r = "this * a" without lower n words, n > 0
6303 // "this" should be the larger one if appropriate.
6304 function bnpMultiplyUpperTo(a, n, r) {
6305 --n
6306 var i = r.t = this.t + a.t - n
6307 r.s = 0; // assumes a,this >= 0
6308 while (--i >= 0) r[i] = 0
6309 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
6310 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
6311 r.clamp()
6312 r.drShiftTo(1, r)
6313 }
6314
6315 // Barrett modular reduction
6316 function Barrett(m) {
6317 // setup Barrett
6318 this.r2 = new BigInteger()
6319 this.q3 = new BigInteger()
6320 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
6321 this.mu = this.r2.divide(m)
6322 this.m = m
6323 }
6324
6325 function barrettConvert(x) {
6326 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
6327 else if (x.compareTo(this.m) < 0) return x
6328 else {
6329 var r = new BigInteger()
6330 x.copyTo(r)
6331 this.reduce(r)
6332 return r
6333 }
6334 }
6335
6336 function barrettRevert(x) {
6337 return x
6338 }
6339
6340 // x = x mod m (HAC 14.42)
6341 function barrettReduce(x) {
6342 var self = this
6343 x.drShiftTo(self.m.t - 1, self.r2)
6344 if (x.t > self.m.t + 1) {
6345 x.t = self.m.t + 1
6346 x.clamp()
6347 }
6348 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
6349 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
6350 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
6351 x.subTo(self.r2, x)
6352 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
6353 }
6354
6355 // r = x^2 mod m; x != r
6356 function barrettSqrTo(x, r) {
6357 x.squareTo(r)
6358 this.reduce(r)
6359 }
6360
6361 // r = x*y mod m; x,y != r
6362 function barrettMulTo(x, y, r) {
6363 x.multiplyTo(y, r)
6364 this.reduce(r)
6365 }
6366
6367 Barrett.prototype.convert = barrettConvert
6368 Barrett.prototype.revert = barrettRevert
6369 Barrett.prototype.reduce = barrettReduce
6370 Barrett.prototype.mulTo = barrettMulTo
6371 Barrett.prototype.sqrTo = barrettSqrTo
6372
6373 // (public) this^e % m (HAC 14.85)
6374 function bnModPow(e, m) {
6375 var i = e.bitLength(),
6376 k, r = nbv(1),
6377 z
6378 if (i <= 0) return r
6379 else if (i < 18) k = 1
6380 else if (i < 48) k = 3
6381 else if (i < 144) k = 4
6382 else if (i < 768) k = 5
6383 else k = 6
6384 if (i < 8)
6385 z = new Classic(m)
6386 else if (m.isEven())
6387 z = new Barrett(m)
6388 else
6389 z = new Montgomery(m)
6390
6391 // precomputation
6392 var g = new Array(),
6393 n = 3,
6394 k1 = k - 1,
6395 km = (1 << k) - 1
6396 g[1] = z.convert(this)
6397 if (k > 1) {
6398 var g2 = new BigInteger()
6399 z.sqrTo(g[1], g2)
6400 while (n <= km) {
6401 g[n] = new BigInteger()
6402 z.mulTo(g2, g[n - 2], g[n])
6403 n += 2
6404 }
6405 }
6406
6407 var j = e.t - 1,
6408 w, is1 = true,
6409 r2 = new BigInteger(),
6410 t
6411 i = nbits(e[j]) - 1
6412 while (j >= 0) {
6413 if (i >= k1) w = (e[j] >> (i - k1)) & km
6414 else {
6415 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
6416 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
6417 }
6418
6419 n = k
6420 while ((w & 1) == 0) {
6421 w >>= 1
6422 --n
6423 }
6424 if ((i -= n) < 0) {
6425 i += this.DB
6426 --j
6427 }
6428 if (is1) { // ret == 1, don't bother squaring or multiplying it
6429 g[w].copyTo(r)
6430 is1 = false
6431 } else {
6432 while (n > 1) {
6433 z.sqrTo(r, r2)
6434 z.sqrTo(r2, r)
6435 n -= 2
6436 }
6437 if (n > 0) z.sqrTo(r, r2)
6438 else {
6439 t = r
6440 r = r2
6441 r2 = t
6442 }
6443 z.mulTo(r2, g[w], r)
6444 }
6445
6446 while (j >= 0 && (e[j] & (1 << i)) == 0) {
6447 z.sqrTo(r, r2)
6448 t = r
6449 r = r2
6450 r2 = t
6451 if (--i < 0) {
6452 i = this.DB - 1
6453 --j
6454 }
6455 }
6456 }
6457 return z.revert(r)
6458 }
6459
6460 // (public) gcd(this,a) (HAC 14.54)
6461 function bnGCD(a) {
6462 var x = (this.s < 0) ? this.negate() : this.clone()
6463 var y = (a.s < 0) ? a.negate() : a.clone()
6464 if (x.compareTo(y) < 0) {
6465 var t = x
6466 x = y
6467 y = t
6468 }
6469 var i = x.getLowestSetBit(),
6470 g = y.getLowestSetBit()
6471 if (g < 0) return x
6472 if (i < g) g = i
6473 if (g > 0) {
6474 x.rShiftTo(g, x)
6475 y.rShiftTo(g, y)
6476 }
6477 while (x.signum() > 0) {
6478 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
6479 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
6480 if (x.compareTo(y) >= 0) {
6481 x.subTo(y, x)
6482 x.rShiftTo(1, x)
6483 } else {
6484 y.subTo(x, y)
6485 y.rShiftTo(1, y)
6486 }
6487 }
6488 if (g > 0) y.lShiftTo(g, y)
6489 return y
6490 }
6491
6492 // (protected) this % n, n < 2^26
6493 function bnpModInt(n) {
6494 if (n <= 0) return 0
6495 var d = this.DV % n,
6496 r = (this.s < 0) ? n - 1 : 0
6497 if (this.t > 0)
6498 if (d == 0) r = this[0] % n
6499 else
6500 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
6501 return r
6502 }
6503
6504 // (public) 1/this % m (HAC 14.61)
6505 function bnModInverse(m) {
6506 var ac = m.isEven()
6507 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
6508 var u = m.clone(),
6509 v = this.clone()
6510 var a = nbv(1),
6511 b = nbv(0),
6512 c = nbv(0),
6513 d = nbv(1)
6514 while (u.signum() != 0) {
6515 while (u.isEven()) {
6516 u.rShiftTo(1, u)
6517 if (ac) {
6518 if (!a.isEven() || !b.isEven()) {
6519 a.addTo(this, a)
6520 b.subTo(m, b)
6521 }
6522 a.rShiftTo(1, a)
6523 } else if (!b.isEven()) b.subTo(m, b)
6524 b.rShiftTo(1, b)
6525 }
6526 while (v.isEven()) {
6527 v.rShiftTo(1, v)
6528 if (ac) {
6529 if (!c.isEven() || !d.isEven()) {
6530 c.addTo(this, c)
6531 d.subTo(m, d)
6532 }
6533 c.rShiftTo(1, c)
6534 } else if (!d.isEven()) d.subTo(m, d)
6535 d.rShiftTo(1, d)
6536 }
6537 if (u.compareTo(v) >= 0) {
6538 u.subTo(v, u)
6539 if (ac) a.subTo(c, a)
6540 b.subTo(d, b)
6541 } else {
6542 v.subTo(u, v)
6543 if (ac) c.subTo(a, c)
6544 d.subTo(b, d)
6545 }
6546 }
6547 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
6548 if (d.compareTo(m) >= 0) return d.subtract(m)
6549 if (d.signum() < 0) d.addTo(m, d)
6550 else return d
6551 if (d.signum() < 0) return d.add(m)
6552 else return d
6553 }
6554
6555 var lowprimes = [
6556 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
6557 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
6558 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
6559 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
6560 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
6561 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
6562 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
6563 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
6564 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
6565 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
6566 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
6567 ]
6568
6569 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
6570
6571 // (public) test primality with certainty >= 1-.5^t
6572 function bnIsProbablePrime(t) {
6573 var i, x = this.abs()
6574 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
6575 for (i = 0; i < lowprimes.length; ++i)
6576 if (x[0] == lowprimes[i]) return true
6577 return false
6578 }
6579 if (x.isEven()) return false
6580 i = 1
6581 while (i < lowprimes.length) {
6582 var m = lowprimes[i],
6583 j = i + 1
6584 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
6585 m = x.modInt(m)
6586 while (i < j) if (m % lowprimes[i++] == 0) return false
6587 }
6588 return x.millerRabin(t)
6589 }
6590
6591 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
6592 function bnpMillerRabin(t) {
6593 var n1 = this.subtract(BigInteger.ONE)
6594 var k = n1.getLowestSetBit()
6595 if (k <= 0) return false
6596 var r = n1.shiftRight(k)
6597 t = (t + 1) >> 1
6598 if (t > lowprimes.length) t = lowprimes.length
6599 var a = new BigInteger(null)
6600 var j, bases = []
6601 for (var i = 0; i < t; ++i) {
6602 for (;;) {
6603 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
6604 if (bases.indexOf(j) == -1) break
6605 }
6606 bases.push(j)
6607 a.fromInt(j)
6608 var y = a.modPow(r, this)
6609 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
6610 var j = 1
6611 while (j++ < k && y.compareTo(n1) != 0) {
6612 y = y.modPowInt(2, this)
6613 if (y.compareTo(BigInteger.ONE) == 0) return false
6614 }
6615 if (y.compareTo(n1) != 0) return false
6616 }
6617 }
6618 return true
6619 }
6620
6621 // protected
6622 proto.chunkSize = bnpChunkSize
6623 proto.toRadix = bnpToRadix
6624 proto.fromRadix = bnpFromRadix
6625 proto.fromNumber = bnpFromNumber
6626 proto.bitwiseTo = bnpBitwiseTo
6627 proto.changeBit = bnpChangeBit
6628 proto.addTo = bnpAddTo
6629 proto.dMultiply = bnpDMultiply
6630 proto.dAddOffset = bnpDAddOffset
6631 proto.multiplyLowerTo = bnpMultiplyLowerTo
6632 proto.multiplyUpperTo = bnpMultiplyUpperTo
6633 proto.modInt = bnpModInt
6634 proto.millerRabin = bnpMillerRabin
6635
6636 // public
6637 proto.clone = bnClone
6638 proto.intValue = bnIntValue
6639 proto.byteValue = bnByteValue
6640 proto.shortValue = bnShortValue
6641 proto.signum = bnSigNum
6642 proto.toByteArray = bnToByteArray
6643 proto.equals = bnEquals
6644 proto.min = bnMin
6645 proto.max = bnMax
6646 proto.and = bnAnd
6647 proto.or = bnOr
6648 proto.xor = bnXor
6649 proto.andNot = bnAndNot
6650 proto.not = bnNot
6651 proto.shiftLeft = bnShiftLeft
6652 proto.shiftRight = bnShiftRight
6653 proto.getLowestSetBit = bnGetLowestSetBit
6654 proto.bitCount = bnBitCount
6655 proto.testBit = bnTestBit
6656 proto.setBit = bnSetBit
6657 proto.clearBit = bnClearBit
6658 proto.flipBit = bnFlipBit
6659 proto.add = bnAdd
6660 proto.subtract = bnSubtract
6661 proto.multiply = bnMultiply
6662 proto.divide = bnDivide
6663 proto.remainder = bnRemainder
6664 proto.divideAndRemainder = bnDivideAndRemainder
6665 proto.modPow = bnModPow
6666 proto.modInverse = bnModInverse
6667 proto.pow = bnPow
6668 proto.gcd = bnGCD
6669 proto.isProbablePrime = bnIsProbablePrime
6670
6671 // JSBN-specific extension
6672 proto.square = bnSquare
6673
6674 // constants
6675 BigInteger.ZERO = nbv(0)
6676 BigInteger.ONE = nbv(1)
6677 BigInteger.valueOf = nbv
6678
6679 module.exports = BigInteger
6680
6681 },{"../package.json":4}],2:[function(require,module,exports){
6682 (function (Buffer){
6683 // FIXME: Kind of a weird way to throw exceptions, consider removing
6684 var assert = require('assert')
6685 var BigInteger = require('./bigi')
6686
6687 /**
6688 * Turns a byte array into a big integer.
6689 *
6690 * This function will interpret a byte array as a big integer in big
6691 * endian notation.
6692 */
6693 BigInteger.fromByteArrayUnsigned = function(byteArray) {
6694 // BigInteger expects a DER integer conformant byte array
6695 if (byteArray[0] & 0x80) {
6696 return new BigInteger([0].concat(byteArray))
6697 }
6698
6699 return new BigInteger(byteArray)
6700 }
6701
6702 /**
6703 * Returns a byte array representation of the big integer.
6704 *
6705 * This returns the absolute of the contained value in big endian
6706 * form. A value of zero results in an empty array.
6707 */
6708 BigInteger.prototype.toByteArrayUnsigned = function() {
6709 var byteArray = this.toByteArray()
6710 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
6711 }
6712
6713 BigInteger.fromDERInteger = function(byteArray) {
6714 return new BigInteger(byteArray)
6715 }
6716
6717 /*
6718 * Converts BigInteger to a DER integer representation.
6719 *
6720 * The format for this value uses the most significant bit as a sign
6721 * bit. If the most significant bit is already set and the integer is
6722 * positive, a 0x00 is prepended.
6723 *
6724 * Examples:
6725 *
6726 * 0 => 0x00
6727 * 1 => 0x01
6728 * -1 => 0xff
6729 * 127 => 0x7f
6730 * -127 => 0x81
6731 * 128 => 0x0080
6732 * -128 => 0x80
6733 * 255 => 0x00ff
6734 * -255 => 0xff01
6735 * 16300 => 0x3fac
6736 * -16300 => 0xc054
6737 * 62300 => 0x00f35c
6738 * -62300 => 0xff0ca4
6739 */
6740 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
6741
6742 BigInteger.fromBuffer = function(buffer) {
6743 // BigInteger expects a DER integer conformant byte array
6744 if (buffer[0] & 0x80) {
6745 var byteArray = Array.prototype.slice.call(buffer)
6746
6747 return new BigInteger([0].concat(byteArray))
6748 }
6749
6750 return new BigInteger(buffer)
6751 }
6752
6753 BigInteger.fromHex = function(hex) {
6754 if (hex === '') return BigInteger.ZERO
6755
6756 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
6757 assert.equal(hex.length % 2, 0, 'Incomplete hex')
6758 return new BigInteger(hex, 16)
6759 }
6760
6761 BigInteger.prototype.toBuffer = function(size) {
6762 var byteArray = this.toByteArrayUnsigned()
6763 var zeros = []
6764
6765 var padding = size - byteArray.length
6766 while (zeros.length < padding) zeros.push(0)
6767
6768 return new Buffer(zeros.concat(byteArray))
6769 }
6770
6771 BigInteger.prototype.toHex = function(size) {
6772 return this.toBuffer(size).toString('hex')
6773 }
6774
6775 }).call(this,require("buffer").Buffer)
6776 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
6777 var BigInteger = require('./bigi')
6778
6779 //addons
6780 require('./convert')
6781
6782 module.exports = BigInteger
6783 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
6784 module.exports={
6785 "name": "bigi",
6786 "version": "1.4.0",
6787 "description": "Big integers.",
6788 "keywords": [
6789 "cryptography",
6790 "math",
6791 "bitcoin",
6792 "arbitrary",
6793 "precision",
6794 "arithmetic",
6795 "big",
6796 "integer",
6797 "int",
6798 "number",
6799 "biginteger",
6800 "bigint",
6801 "bignumber",
6802 "decimal",
6803 "float"
6804 ],
6805 "devDependencies": {
6806 "mocha": "^1.20.1",
6807 "jshint": "^2.5.1",
6808 "coveralls": "^2.10.0",
6809 "istanbul": "^0.2.11"
6810 },
6811 "repository": {
6812 "url": "https://github.com/cryptocoinjs/bigi",
6813 "type": "git"
6814 },
6815 "main": "./lib/index.js",
6816 "scripts": {
6817 "test": "_mocha -- test/*.js",
6818 "jshint": "jshint --config jshint.json lib/*.js ; true",
6819 "unit": "mocha",
6820 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
6821 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
6822 },
6823 "dependencies": {},
6824 "testling": {
6825 "files": "test/*.js",
6826 "harness": "mocha",
6827 "browsers": [
6828 "ie/9..latest",
6829 "firefox/latest",
6830 "chrome/latest",
6831 "safari/6.0..latest",
6832 "iphone/6.0..latest",
6833 "android-browser/4.2..latest"
6834 ]
6835 },
6836 "bugs": {
6837 "url": "https://github.com/cryptocoinjs/bigi/issues"
6838 },
6839 "homepage": "https://github.com/cryptocoinjs/bigi",
6840 "_id": "bigi@1.4.0",
6841 "dist": {
6842 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
6843 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
6844 },
6845 "_from": "bigi@^1.4.0",
6846 "_npmVersion": "1.4.3",
6847 "_npmUser": {
6848 "name": "jp",
6849 "email": "jprichardson@gmail.com"
6850 },
6851 "maintainers": [
6852 {
6853 "name": "jp",
6854 "email": "jprichardson@gmail.com"
6855 },
6856 {
6857 "name": "midnightlightning",
6858 "email": "boydb@midnightdesign.ws"
6859 },
6860 {
6861 "name": "sidazhang",
6862 "email": "sidazhang89@gmail.com"
6863 },
6864 {
6865 "name": "nadav",
6866 "email": "npm@shesek.info"
6867 }
6868 ],
6869 "directories": {},
6870 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
6871 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
6872 }
6873
6874 },{}],5:[function(require,module,exports){
6875 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
6876 //
6877 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
6878 //
6879 // Originally from narwhal.js (http://narwhaljs.org)
6880 // Copyright (c) 2009 Thomas Robinson <280north.com>
6881 //
6882 // Permission is hereby granted, free of charge, to any person obtaining a copy
6883 // of this software and associated documentation files (the 'Software'), to
6884 // deal in the Software without restriction, including without limitation the
6885 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6886 // sell copies of the Software, and to permit persons to whom the Software is
6887 // furnished to do so, subject to the following conditions:
6888 //
6889 // The above copyright notice and this permission notice shall be included in
6890 // all copies or substantial portions of the Software.
6891 //
6892 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6893 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6894 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6895 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
6896 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
6897 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
6898
6899 // when used in node, this will actually load the util module we depend on
6900 // versus loading the builtin util module as happens otherwise
6901 // this is a bug in node module loading as far as I am concerned
6902 var util = require('util/');
6903
6904 var pSlice = Array.prototype.slice;
6905 var hasOwn = Object.prototype.hasOwnProperty;
6906
6907 // 1. The assert module provides functions that throw
6908 // AssertionError's when particular conditions are not met. The
6909 // assert module must conform to the following interface.
6910
6911 var assert = module.exports = ok;
6912
6913 // 2. The AssertionError is defined in assert.
6914 // new assert.AssertionError({ message: message,
6915 // actual: actual,
6916 // expected: expected })
6917
6918 assert.AssertionError = function AssertionError(options) {
6919 this.name = 'AssertionError';
6920 this.actual = options.actual;
6921 this.expected = options.expected;
6922 this.operator = options.operator;
6923 if (options.message) {
6924 this.message = options.message;
6925 this.generatedMessage = false;
6926 } else {
6927 this.message = getMessage(this);
6928 this.generatedMessage = true;
6929 }
6930 var stackStartFunction = options.stackStartFunction || fail;
6931
6932 if (Error.captureStackTrace) {
6933 Error.captureStackTrace(this, stackStartFunction);
6934 }
6935 else {
6936 // non v8 browsers so we can have a stacktrace
6937 var err = new Error();
6938 if (err.stack) {
6939 var out = err.stack;
6940
6941 // try to strip useless frames
6942 var fn_name = stackStartFunction.name;
6943 var idx = out.indexOf('\n' + fn_name);
6944 if (idx >= 0) {
6945 // once we have located the function frame
6946 // we need to strip out everything before it (and its line)
6947 var next_line = out.indexOf('\n', idx + 1);
6948 out = out.substring(next_line + 1);
6949 }
6950
6951 this.stack = out;
6952 }
6953 }
6954 };
6955
6956 // assert.AssertionError instanceof Error
6957 util.inherits(assert.AssertionError, Error);
6958
6959 function replacer(key, value) {
6960 if (util.isUndefined(value)) {
6961 return '' + value;
6962 }
6963 if (util.isNumber(value) && !isFinite(value)) {
6964 return value.toString();
6965 }
6966 if (util.isFunction(value) || util.isRegExp(value)) {
6967 return value.toString();
6968 }
6969 return value;
6970 }
6971
6972 function truncate(s, n) {
6973 if (util.isString(s)) {
6974 return s.length < n ? s : s.slice(0, n);
6975 } else {
6976 return s;
6977 }
6978 }
6979
6980 function getMessage(self) {
6981 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
6982 self.operator + ' ' +
6983 truncate(JSON.stringify(self.expected, replacer), 128);
6984 }
6985
6986 // At present only the three keys mentioned above are used and
6987 // understood by the spec. Implementations or sub modules can pass
6988 // other keys to the AssertionError's constructor - they will be
6989 // ignored.
6990
6991 // 3. All of the following functions must throw an AssertionError
6992 // when a corresponding condition is not met, with a message that
6993 // may be undefined if not provided. All assertion methods provide
6994 // both the actual and expected values to the assertion error for
6995 // display purposes.
6996
6997 function fail(actual, expected, message, operator, stackStartFunction) {
6998 throw new assert.AssertionError({
6999 message: message,
7000 actual: actual,
7001 expected: expected,
7002 operator: operator,
7003 stackStartFunction: stackStartFunction
7004 });
7005 }
7006
7007 // EXTENSION! allows for well behaved errors defined elsewhere.
7008 assert.fail = fail;
7009
7010 // 4. Pure assertion tests whether a value is truthy, as determined
7011 // by !!guard.
7012 // assert.ok(guard, message_opt);
7013 // This statement is equivalent to assert.equal(true, !!guard,
7014 // message_opt);. To test strictly for the value true, use
7015 // assert.strictEqual(true, guard, message_opt);.
7016
7017 function ok(value, message) {
7018 if (!value) fail(value, true, message, '==', assert.ok);
7019 }
7020 assert.ok = ok;
7021
7022 // 5. The equality assertion tests shallow, coercive equality with
7023 // ==.
7024 // assert.equal(actual, expected, message_opt);
7025
7026 assert.equal = function equal(actual, expected, message) {
7027 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7028 };
7029
7030 // 6. The non-equality assertion tests for whether two objects are not equal
7031 // with != assert.notEqual(actual, expected, message_opt);
7032
7033 assert.notEqual = function notEqual(actual, expected, message) {
7034 if (actual == expected) {
7035 fail(actual, expected, message, '!=', assert.notEqual);
7036 }
7037 };
7038
7039 // 7. The equivalence assertion tests a deep equality relation.
7040 // assert.deepEqual(actual, expected, message_opt);
7041
7042 assert.deepEqual = function deepEqual(actual, expected, message) {
7043 if (!_deepEqual(actual, expected)) {
7044 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7045 }
7046 };
7047
7048 function _deepEqual(actual, expected) {
7049 // 7.1. All identical values are equivalent, as determined by ===.
7050 if (actual === expected) {
7051 return true;
7052
7053 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
7054 if (actual.length != expected.length) return false;
7055
7056 for (var i = 0; i < actual.length; i++) {
7057 if (actual[i] !== expected[i]) return false;
7058 }
7059
7060 return true;
7061
7062 // 7.2. If the expected value is a Date object, the actual value is
7063 // equivalent if it is also a Date object that refers to the same time.
7064 } else if (util.isDate(actual) && util.isDate(expected)) {
7065 return actual.getTime() === expected.getTime();
7066
7067 // 7.3 If the expected value is a RegExp object, the actual value is
7068 // equivalent if it is also a RegExp object with the same source and
7069 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7070 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7071 return actual.source === expected.source &&
7072 actual.global === expected.global &&
7073 actual.multiline === expected.multiline &&
7074 actual.lastIndex === expected.lastIndex &&
7075 actual.ignoreCase === expected.ignoreCase;
7076
7077 // 7.4. Other pairs that do not both pass typeof value == 'object',
7078 // equivalence is determined by ==.
7079 } else if (!util.isObject(actual) && !util.isObject(expected)) {
7080 return actual == expected;
7081
7082 // 7.5 For all other Object pairs, including Array objects, equivalence is
7083 // determined by having the same number of owned properties (as verified
7084 // with Object.prototype.hasOwnProperty.call), the same set of keys
7085 // (although not necessarily the same order), equivalent values for every
7086 // corresponding key, and an identical 'prototype' property. Note: this
7087 // accounts for both named and indexed properties on Arrays.
7088 } else {
7089 return objEquiv(actual, expected);
7090 }
7091 }
7092
7093 function isArguments(object) {
7094 return Object.prototype.toString.call(object) == '[object Arguments]';
7095 }
7096
7097 function objEquiv(a, b) {
7098 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
7099 return false;
7100 // an identical 'prototype' property.
7101 if (a.prototype !== b.prototype) return false;
7102 // if one is a primitive, the other must be same
7103 if (util.isPrimitive(a) || util.isPrimitive(b)) {
7104 return a === b;
7105 }
7106 var aIsArgs = isArguments(a),
7107 bIsArgs = isArguments(b);
7108 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7109 return false;
7110 if (aIsArgs) {
7111 a = pSlice.call(a);
7112 b = pSlice.call(b);
7113 return _deepEqual(a, b);
7114 }
7115 var ka = objectKeys(a),
7116 kb = objectKeys(b),
7117 key, i;
7118 // having the same number of owned properties (keys incorporates
7119 // hasOwnProperty)
7120 if (ka.length != kb.length)
7121 return false;
7122 //the same set of keys (although not necessarily the same order),
7123 ka.sort();
7124 kb.sort();
7125 //~~~cheap key test
7126 for (i = ka.length - 1; i >= 0; i--) {
7127 if (ka[i] != kb[i])
7128 return false;
7129 }
7130 //equivalent values for every corresponding key, and
7131 //~~~possibly expensive deep test
7132 for (i = ka.length - 1; i >= 0; i--) {
7133 key = ka[i];
7134 if (!_deepEqual(a[key], b[key])) return false;
7135 }
7136 return true;
7137 }
7138
7139 // 8. The non-equivalence assertion tests for any deep inequality.
7140 // assert.notDeepEqual(actual, expected, message_opt);
7141
7142 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7143 if (_deepEqual(actual, expected)) {
7144 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7145 }
7146 };
7147
7148 // 9. The strict equality assertion tests strict equality, as determined by ===.
7149 // assert.strictEqual(actual, expected, message_opt);
7150
7151 assert.strictEqual = function strictEqual(actual, expected, message) {
7152 if (actual !== expected) {
7153 fail(actual, expected, message, '===', assert.strictEqual);
7154 }
7155 };
7156
7157 // 10. The strict non-equality assertion tests for strict inequality, as
7158 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7159
7160 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7161 if (actual === expected) {
7162 fail(actual, expected, message, '!==', assert.notStrictEqual);
7163 }
7164 };
7165
7166 function expectedException(actual, expected) {
7167 if (!actual || !expected) {
7168 return false;
7169 }
7170
7171 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7172 return expected.test(actual);
7173 } else if (actual instanceof expected) {
7174 return true;
7175 } else if (expected.call({}, actual) === true) {
7176 return true;
7177 }
7178
7179 return false;
7180 }
7181
7182 function _throws(shouldThrow, block, expected, message) {
7183 var actual;
7184
7185 if (util.isString(expected)) {
7186 message = expected;
7187 expected = null;
7188 }
7189
7190 try {
7191 block();
7192 } catch (e) {
7193 actual = e;
7194 }
7195
7196 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7197 (message ? ' ' + message : '.');
7198
7199 if (shouldThrow && !actual) {
7200 fail(actual, expected, 'Missing expected exception' + message);
7201 }
7202
7203 if (!shouldThrow && expectedException(actual, expected)) {
7204 fail(actual, expected, 'Got unwanted exception' + message);
7205 }
7206
7207 if ((shouldThrow && actual && expected &&
7208 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7209 throw actual;
7210 }
7211 }
7212
7213 // 11. Expected to throw an error:
7214 // assert.throws(block, Error_opt, message_opt);
7215
7216 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7217 _throws.apply(this, [true].concat(pSlice.call(arguments)));
7218 };
7219
7220 // EXTENSION! This is annoying to write outside this module.
7221 assert.doesNotThrow = function(block, /*optional*/message) {
7222 _throws.apply(this, [false].concat(pSlice.call(arguments)));
7223 };
7224
7225 assert.ifError = function(err) { if (err) {throw err;}};
7226
7227 var objectKeys = Object.keys || function (obj) {
7228 var keys = [];
7229 for (var key in obj) {
7230 if (hasOwn.call(obj, key)) keys.push(key);
7231 }
7232 return keys;
7233 };
7234
7235 },{"util/":29}],6:[function(require,module,exports){
7236
7237 },{}],7:[function(require,module,exports){
7238 /*!
7239 * The buffer module from node.js, for the browser.
7240 *
7241 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7242 * @license MIT
7243 */
7244
7245 var base64 = require('base64-js')
7246 var ieee754 = require('ieee754')
7247 var isArray = require('is-array')
7248
7249 exports.Buffer = Buffer
7250 exports.SlowBuffer = SlowBuffer
7251 exports.INSPECT_MAX_BYTES = 50
7252 Buffer.poolSize = 8192 // not used by this implementation
7253
7254 var rootParent = {}
7255
7256 /**
7257 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7258 * === true Use Uint8Array implementation (fastest)
7259 * === false Use Object implementation (most compatible, even IE6)
7260 *
7261 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7262 * Opera 11.6+, iOS 4.2+.
7263 *
7264 * Due to various browser bugs, sometimes the Object implementation will be used even
7265 * when the browser supports typed arrays.
7266 *
7267 * Note:
7268 *
7269 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
7270 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
7271 *
7272 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
7273 * on objects.
7274 *
7275 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
7276 *
7277 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
7278 * incorrect length in some situations.
7279
7280 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
7281 * get the Object implementation, which is slower but behaves correctly.
7282 */
7283 Buffer.TYPED_ARRAY_SUPPORT = (function () {
7284 function Bar () {}
7285 try {
7286 var arr = new Uint8Array(1)
7287 arr.foo = function () { return 42 }
7288 arr.constructor = Bar
7289 return arr.foo() === 42 && // typed array instances can be augmented
7290 arr.constructor === Bar && // constructor can be set
7291 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
7292 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
7293 } catch (e) {
7294 return false
7295 }
7296 })()
7297
7298 function kMaxLength () {
7299 return Buffer.TYPED_ARRAY_SUPPORT
7300 ? 0x7fffffff
7301 : 0x3fffffff
7302 }
7303
7304 /**
7305 * Class: Buffer
7306 * =============
7307 *
7308 * The Buffer constructor returns instances of `Uint8Array` that are augmented
7309 * with function properties for all the node `Buffer` API functions. We use
7310 * `Uint8Array` so that square bracket notation works as expected -- it returns
7311 * a single octet.
7312 *
7313 * By augmenting the instances, we can avoid modifying the `Uint8Array`
7314 * prototype.
7315 */
7316 function Buffer (arg) {
7317 if (!(this instanceof Buffer)) {
7318 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
7319 if (arguments.length > 1) return new Buffer(arg, arguments[1])
7320 return new Buffer(arg)
7321 }
7322
7323 this.length = 0
7324 this.parent = undefined
7325
7326 // Common case.
7327 if (typeof arg === 'number') {
7328 return fromNumber(this, arg)
7329 }
7330
7331 // Slightly less common case.
7332 if (typeof arg === 'string') {
7333 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
7334 }
7335
7336 // Unusual.
7337 return fromObject(this, arg)
7338 }
7339
7340 function fromNumber (that, length) {
7341 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
7342 if (!Buffer.TYPED_ARRAY_SUPPORT) {
7343 for (var i = 0; i < length; i++) {
7344 that[i] = 0
7345 }
7346 }
7347 return that
7348 }
7349
7350 function fromString (that, string, encoding) {
7351 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
7352
7353 // Assumption: byteLength() return value is always < kMaxLength.
7354 var length = byteLength(string, encoding) | 0
7355 that = allocate(that, length)
7356
7357 that.write(string, encoding)
7358 return that
7359 }
7360
7361 function fromObject (that, object) {
7362 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
7363
7364 if (isArray(object)) return fromArray(that, object)
7365
7366 if (object == null) {
7367 throw new TypeError('must start with number, buffer, array or string')
7368 }
7369
7370 if (typeof ArrayBuffer !== 'undefined') {
7371 if (object.buffer instanceof ArrayBuffer) {
7372 return fromTypedArray(that, object)
7373 }
7374 if (object instanceof ArrayBuffer) {
7375 return fromArrayBuffer(that, object)
7376 }
7377 }
7378
7379 if (object.length) return fromArrayLike(that, object)
7380
7381 return fromJsonObject(that, object)
7382 }
7383
7384 function fromBuffer (that, buffer) {
7385 var length = checked(buffer.length) | 0
7386 that = allocate(that, length)
7387 buffer.copy(that, 0, 0, length)
7388 return that
7389 }
7390
7391 function fromArray (that, array) {
7392 var length = checked(array.length) | 0
7393 that = allocate(that, length)
7394 for (var i = 0; i < length; i += 1) {
7395 that[i] = array[i] & 255
7396 }
7397 return that
7398 }
7399
7400 // Duplicate of fromArray() to keep fromArray() monomorphic.
7401 function fromTypedArray (that, array) {
7402 var length = checked(array.length) | 0
7403 that = allocate(that, length)
7404 // Truncating the elements is probably not what people expect from typed
7405 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
7406 // of the old Buffer constructor.
7407 for (var i = 0; i < length; i += 1) {
7408 that[i] = array[i] & 255
7409 }
7410 return that
7411 }
7412
7413 function fromArrayBuffer (that, array) {
7414 if (Buffer.TYPED_ARRAY_SUPPORT) {
7415 // Return an augmented `Uint8Array` instance, for best performance
7416 array.byteLength
7417 that = Buffer._augment(new Uint8Array(array))
7418 } else {
7419 // Fallback: Return an object instance of the Buffer class
7420 that = fromTypedArray(that, new Uint8Array(array))
7421 }
7422 return that
7423 }
7424
7425 function fromArrayLike (that, array) {
7426 var length = checked(array.length) | 0
7427 that = allocate(that, length)
7428 for (var i = 0; i < length; i += 1) {
7429 that[i] = array[i] & 255
7430 }
7431 return that
7432 }
7433
7434 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
7435 // Returns a zero-length buffer for inputs that don't conform to the spec.
7436 function fromJsonObject (that, object) {
7437 var array
7438 var length = 0
7439
7440 if (object.type === 'Buffer' && isArray(object.data)) {
7441 array = object.data
7442 length = checked(array.length) | 0
7443 }
7444 that = allocate(that, length)
7445
7446 for (var i = 0; i < length; i += 1) {
7447 that[i] = array[i] & 255
7448 }
7449 return that
7450 }
7451
7452 function allocate (that, length) {
7453 if (Buffer.TYPED_ARRAY_SUPPORT) {
7454 // Return an augmented `Uint8Array` instance, for best performance
7455 that = Buffer._augment(new Uint8Array(length))
7456 } else {
7457 // Fallback: Return an object instance of the Buffer class
7458 that.length = length
7459 that._isBuffer = true
7460 }
7461
7462 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
7463 if (fromPool) that.parent = rootParent
7464
7465 return that
7466 }
7467
7468 function checked (length) {
7469 // Note: cannot use `length < kMaxLength` here because that fails when
7470 // length is NaN (which is otherwise coerced to zero.)
7471 if (length >= kMaxLength()) {
7472 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
7473 'size: 0x' + kMaxLength().toString(16) + ' bytes')
7474 }
7475 return length | 0
7476 }
7477
7478 function SlowBuffer (subject, encoding) {
7479 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
7480
7481 var buf = new Buffer(subject, encoding)
7482 delete buf.parent
7483 return buf
7484 }
7485
7486 Buffer.isBuffer = function isBuffer (b) {
7487 return !!(b != null && b._isBuffer)
7488 }
7489
7490 Buffer.compare = function compare (a, b) {
7491 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
7492 throw new TypeError('Arguments must be Buffers')
7493 }
7494
7495 if (a === b) return 0
7496
7497 var x = a.length
7498 var y = b.length
7499
7500 var i = 0
7501 var len = Math.min(x, y)
7502 while (i < len) {
7503 if (a[i] !== b[i]) break
7504
7505 ++i
7506 }
7507
7508 if (i !== len) {
7509 x = a[i]
7510 y = b[i]
7511 }
7512
7513 if (x < y) return -1
7514 if (y < x) return 1
7515 return 0
7516 }
7517
7518 Buffer.isEncoding = function isEncoding (encoding) {
7519 switch (String(encoding).toLowerCase()) {
7520 case 'hex':
7521 case 'utf8':
7522 case 'utf-8':
7523 case 'ascii':
7524 case 'binary':
7525 case 'base64':
7526 case 'raw':
7527 case 'ucs2':
7528 case 'ucs-2':
7529 case 'utf16le':
7530 case 'utf-16le':
7531 return true
7532 default:
7533 return false
7534 }
7535 }
7536
7537 Buffer.concat = function concat (list, length) {
7538 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
7539
7540 if (list.length === 0) {
7541 return new Buffer(0)
7542 }
7543
7544 var i
7545 if (length === undefined) {
7546 length = 0
7547 for (i = 0; i < list.length; i++) {
7548 length += list[i].length
7549 }
7550 }
7551
7552 var buf = new Buffer(length)
7553 var pos = 0
7554 for (i = 0; i < list.length; i++) {
7555 var item = list[i]
7556 item.copy(buf, pos)
7557 pos += item.length
7558 }
7559 return buf
7560 }
7561
7562 function byteLength (string, encoding) {
7563 if (typeof string !== 'string') string = '' + string
7564
7565 var len = string.length
7566 if (len === 0) return 0
7567
7568 // Use a for loop to avoid recursion
7569 var loweredCase = false
7570 for (;;) {
7571 switch (encoding) {
7572 case 'ascii':
7573 case 'binary':
7574 // Deprecated
7575 case 'raw':
7576 case 'raws':
7577 return len
7578 case 'utf8':
7579 case 'utf-8':
7580 return utf8ToBytes(string).length
7581 case 'ucs2':
7582 case 'ucs-2':
7583 case 'utf16le':
7584 case 'utf-16le':
7585 return len * 2
7586 case 'hex':
7587 return len >>> 1
7588 case 'base64':
7589 return base64ToBytes(string).length
7590 default:
7591 if (loweredCase) return utf8ToBytes(string).length // assume utf8
7592 encoding = ('' + encoding).toLowerCase()
7593 loweredCase = true
7594 }
7595 }
7596 }
7597 Buffer.byteLength = byteLength
7598
7599 // pre-set for values that may exist in the future
7600 Buffer.prototype.length = undefined
7601 Buffer.prototype.parent = undefined
7602
7603 function slowToString (encoding, start, end) {
7604 var loweredCase = false
7605
7606 start = start | 0
7607 end = end === undefined || end === Infinity ? this.length : end | 0
7608
7609 if (!encoding) encoding = 'utf8'
7610 if (start < 0) start = 0
7611 if (end > this.length) end = this.length
7612 if (end <= start) return ''
7613
7614 while (true) {
7615 switch (encoding) {
7616 case 'hex':
7617 return hexSlice(this, start, end)
7618
7619 case 'utf8':
7620 case 'utf-8':
7621 return utf8Slice(this, start, end)
7622
7623 case 'ascii':
7624 return asciiSlice(this, start, end)
7625
7626 case 'binary':
7627 return binarySlice(this, start, end)
7628
7629 case 'base64':
7630 return base64Slice(this, start, end)
7631
7632 case 'ucs2':
7633 case 'ucs-2':
7634 case 'utf16le':
7635 case 'utf-16le':
7636 return utf16leSlice(this, start, end)
7637
7638 default:
7639 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
7640 encoding = (encoding + '').toLowerCase()
7641 loweredCase = true
7642 }
7643 }
7644 }
7645
7646 Buffer.prototype.toString = function toString () {
7647 var length = this.length | 0
7648 if (length === 0) return ''
7649 if (arguments.length === 0) return utf8Slice(this, 0, length)
7650 return slowToString.apply(this, arguments)
7651 }
7652
7653 Buffer.prototype.equals = function equals (b) {
7654 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
7655 if (this === b) return true
7656 return Buffer.compare(this, b) === 0
7657 }
7658
7659 Buffer.prototype.inspect = function inspect () {
7660 var str = ''
7661 var max = exports.INSPECT_MAX_BYTES
7662 if (this.length > 0) {
7663 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
7664 if (this.length > max) str += ' ... '
7665 }
7666 return '<Buffer ' + str + '>'
7667 }
7668
7669 Buffer.prototype.compare = function compare (b) {
7670 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
7671 if (this === b) return 0
7672 return Buffer.compare(this, b)
7673 }
7674
7675 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
7676 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
7677 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
7678 byteOffset >>= 0
7679
7680 if (this.length === 0) return -1
7681 if (byteOffset >= this.length) return -1
7682
7683 // Negative offsets start from the end of the buffer
7684 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
7685
7686 if (typeof val === 'string') {
7687 if (val.length === 0) return -1 // special case: looking for empty string always fails
7688 return String.prototype.indexOf.call(this, val, byteOffset)
7689 }
7690 if (Buffer.isBuffer(val)) {
7691 return arrayIndexOf(this, val, byteOffset)
7692 }
7693 if (typeof val === 'number') {
7694 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
7695 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
7696 }
7697 return arrayIndexOf(this, [ val ], byteOffset)
7698 }
7699
7700 function arrayIndexOf (arr, val, byteOffset) {
7701 var foundIndex = -1
7702 for (var i = 0; byteOffset + i < arr.length; i++) {
7703 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
7704 if (foundIndex === -1) foundIndex = i
7705 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
7706 } else {
7707 foundIndex = -1
7708 }
7709 }
7710 return -1
7711 }
7712
7713 throw new TypeError('val must be string, number or Buffer')
7714 }
7715
7716 // `get` is deprecated
7717 Buffer.prototype.get = function get (offset) {
7718 console.log('.get() is deprecated. Access using array indexes instead.')
7719 return this.readUInt8(offset)
7720 }
7721
7722 // `set` is deprecated
7723 Buffer.prototype.set = function set (v, offset) {
7724 console.log('.set() is deprecated. Access using array indexes instead.')
7725 return this.writeUInt8(v, offset)
7726 }
7727
7728 function hexWrite (buf, string, offset, length) {
7729 offset = Number(offset) || 0
7730 var remaining = buf.length - offset
7731 if (!length) {
7732 length = remaining
7733 } else {
7734 length = Number(length)
7735 if (length > remaining) {
7736 length = remaining
7737 }
7738 }
7739
7740 // must be an even number of digits
7741 var strLen = string.length
7742 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
7743
7744 if (length > strLen / 2) {
7745 length = strLen / 2
7746 }
7747 for (var i = 0; i < length; i++) {
7748 var parsed = parseInt(string.substr(i * 2, 2), 16)
7749 if (isNaN(parsed)) throw new Error('Invalid hex string')
7750 buf[offset + i] = parsed
7751 }
7752 return i
7753 }
7754
7755 function utf8Write (buf, string, offset, length) {
7756 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
7757 }
7758
7759 function asciiWrite (buf, string, offset, length) {
7760 return blitBuffer(asciiToBytes(string), buf, offset, length)
7761 }
7762
7763 function binaryWrite (buf, string, offset, length) {
7764 return asciiWrite(buf, string, offset, length)
7765 }
7766
7767 function base64Write (buf, string, offset, length) {
7768 return blitBuffer(base64ToBytes(string), buf, offset, length)
7769 }
7770
7771 function ucs2Write (buf, string, offset, length) {
7772 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
7773 }
7774
7775 Buffer.prototype.write = function write (string, offset, length, encoding) {
7776 // Buffer#write(string)
7777 if (offset === undefined) {
7778 encoding = 'utf8'
7779 length = this.length
7780 offset = 0
7781 // Buffer#write(string, encoding)
7782 } else if (length === undefined && typeof offset === 'string') {
7783 encoding = offset
7784 length = this.length
7785 offset = 0
7786 // Buffer#write(string, offset[, length][, encoding])
7787 } else if (isFinite(offset)) {
7788 offset = offset | 0
7789 if (isFinite(length)) {
7790 length = length | 0
7791 if (encoding === undefined) encoding = 'utf8'
7792 } else {
7793 encoding = length
7794 length = undefined
7795 }
7796 // legacy write(string, encoding, offset, length) - remove in v0.13
7797 } else {
7798 var swap = encoding
7799 encoding = offset
7800 offset = length | 0
7801 length = swap
7802 }
7803
7804 var remaining = this.length - offset
7805 if (length === undefined || length > remaining) length = remaining
7806
7807 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
7808 throw new RangeError('attempt to write outside buffer bounds')
7809 }
7810
7811 if (!encoding) encoding = 'utf8'
7812
7813 var loweredCase = false
7814 for (;;) {
7815 switch (encoding) {
7816 case 'hex':
7817 return hexWrite(this, string, offset, length)
7818
7819 case 'utf8':
7820 case 'utf-8':
7821 return utf8Write(this, string, offset, length)
7822
7823 case 'ascii':
7824 return asciiWrite(this, string, offset, length)
7825
7826 case 'binary':
7827 return binaryWrite(this, string, offset, length)
7828
7829 case 'base64':
7830 // Warning: maxLength not taken into account in base64Write
7831 return base64Write(this, string, offset, length)
7832
7833 case 'ucs2':
7834 case 'ucs-2':
7835 case 'utf16le':
7836 case 'utf-16le':
7837 return ucs2Write(this, string, offset, length)
7838
7839 default:
7840 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
7841 encoding = ('' + encoding).toLowerCase()
7842 loweredCase = true
7843 }
7844 }
7845 }
7846
7847 Buffer.prototype.toJSON = function toJSON () {
7848 return {
7849 type: 'Buffer',
7850 data: Array.prototype.slice.call(this._arr || this, 0)
7851 }
7852 }
7853
7854 function base64Slice (buf, start, end) {
7855 if (start === 0 && end === buf.length) {
7856 return base64.fromByteArray(buf)
7857 } else {
7858 return base64.fromByteArray(buf.slice(start, end))
7859 }
7860 }
7861
7862 function utf8Slice (buf, start, end) {
7863 end = Math.min(buf.length, end)
7864 var firstByte
7865 var secondByte
7866 var thirdByte
7867 var fourthByte
7868 var bytesPerSequence
7869 var tempCodePoint
7870 var codePoint
7871 var res = []
7872 var i = start
7873
7874 for (; i < end; i += bytesPerSequence) {
7875 firstByte = buf[i]
7876 codePoint = 0xFFFD
7877
7878 if (firstByte > 0xEF) {
7879 bytesPerSequence = 4
7880 } else if (firstByte > 0xDF) {
7881 bytesPerSequence = 3
7882 } else if (firstByte > 0xBF) {
7883 bytesPerSequence = 2
7884 } else {
7885 bytesPerSequence = 1
7886 }
7887
7888 if (i + bytesPerSequence <= end) {
7889 switch (bytesPerSequence) {
7890 case 1:
7891 if (firstByte < 0x80) {
7892 codePoint = firstByte
7893 }
7894 break
7895 case 2:
7896 secondByte = buf[i + 1]
7897 if ((secondByte & 0xC0) === 0x80) {
7898 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
7899 if (tempCodePoint > 0x7F) {
7900 codePoint = tempCodePoint
7901 }
7902 }
7903 break
7904 case 3:
7905 secondByte = buf[i + 1]
7906 thirdByte = buf[i + 2]
7907 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
7908 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
7909 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
7910 codePoint = tempCodePoint
7911 }
7912 }
7913 break
7914 case 4:
7915 secondByte = buf[i + 1]
7916 thirdByte = buf[i + 2]
7917 fourthByte = buf[i + 3]
7918 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
7919 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
7920 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
7921 codePoint = tempCodePoint
7922 }
7923 }
7924 }
7925 }
7926
7927 if (codePoint === 0xFFFD) {
7928 // we generated an invalid codePoint so make sure to only advance by 1 byte
7929 bytesPerSequence = 1
7930 } else if (codePoint > 0xFFFF) {
7931 // encode to utf16 (surrogate pair dance)
7932 codePoint -= 0x10000
7933 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
7934 codePoint = 0xDC00 | codePoint & 0x3FF
7935 }
7936
7937 res.push(codePoint)
7938 }
7939
7940 return String.fromCharCode.apply(String, res)
7941 }
7942
7943 function asciiSlice (buf, start, end) {
7944 var ret = ''
7945 end = Math.min(buf.length, end)
7946
7947 for (var i = start; i < end; i++) {
7948 ret += String.fromCharCode(buf[i] & 0x7F)
7949 }
7950 return ret
7951 }
7952
7953 function binarySlice (buf, start, end) {
7954 var ret = ''
7955 end = Math.min(buf.length, end)
7956
7957 for (var i = start; i < end; i++) {
7958 ret += String.fromCharCode(buf[i])
7959 }
7960 return ret
7961 }
7962
7963 function hexSlice (buf, start, end) {
7964 var len = buf.length
7965
7966 if (!start || start < 0) start = 0
7967 if (!end || end < 0 || end > len) end = len
7968
7969 var out = ''
7970 for (var i = start; i < end; i++) {
7971 out += toHex(buf[i])
7972 }
7973 return out
7974 }
7975
7976 function utf16leSlice (buf, start, end) {
7977 var bytes = buf.slice(start, end)
7978 var res = ''
7979 for (var i = 0; i < bytes.length; i += 2) {
7980 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
7981 }
7982 return res
7983 }
7984
7985 Buffer.prototype.slice = function slice (start, end) {
7986 var len = this.length
7987 start = ~~start
7988 end = end === undefined ? len : ~~end
7989
7990 if (start < 0) {
7991 start += len
7992 if (start < 0) start = 0
7993 } else if (start > len) {
7994 start = len
7995 }
7996
7997 if (end < 0) {
7998 end += len
7999 if (end < 0) end = 0
8000 } else if (end > len) {
8001 end = len
8002 }
8003
8004 if (end < start) end = start
8005
8006 var newBuf
8007 if (Buffer.TYPED_ARRAY_SUPPORT) {
8008 newBuf = Buffer._augment(this.subarray(start, end))
8009 } else {
8010 var sliceLen = end - start
8011 newBuf = new Buffer(sliceLen, undefined)
8012 for (var i = 0; i < sliceLen; i++) {
8013 newBuf[i] = this[i + start]
8014 }
8015 }
8016
8017 if (newBuf.length) newBuf.parent = this.parent || this
8018
8019 return newBuf
8020 }
8021
8022 /*
8023 * Need to make sure that buffer isn't trying to write out of bounds.
8024 */
8025 function checkOffset (offset, ext, length) {
8026 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8027 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8028 }
8029
8030 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8031 offset = offset | 0
8032 byteLength = byteLength | 0
8033 if (!noAssert) checkOffset(offset, byteLength, this.length)
8034
8035 var val = this[offset]
8036 var mul = 1
8037 var i = 0
8038 while (++i < byteLength && (mul *= 0x100)) {
8039 val += this[offset + i] * mul
8040 }
8041
8042 return val
8043 }
8044
8045 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8046 offset = offset | 0
8047 byteLength = byteLength | 0
8048 if (!noAssert) {
8049 checkOffset(offset, byteLength, this.length)
8050 }
8051
8052 var val = this[offset + --byteLength]
8053 var mul = 1
8054 while (byteLength > 0 && (mul *= 0x100)) {
8055 val += this[offset + --byteLength] * mul
8056 }
8057
8058 return val
8059 }
8060
8061 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8062 if (!noAssert) checkOffset(offset, 1, this.length)
8063 return this[offset]
8064 }
8065
8066 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8067 if (!noAssert) checkOffset(offset, 2, this.length)
8068 return this[offset] | (this[offset + 1] << 8)
8069 }
8070
8071 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8072 if (!noAssert) checkOffset(offset, 2, this.length)
8073 return (this[offset] << 8) | this[offset + 1]
8074 }
8075
8076 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
8077 if (!noAssert) checkOffset(offset, 4, this.length)
8078
8079 return ((this[offset]) |
8080 (this[offset + 1] << 8) |
8081 (this[offset + 2] << 16)) +
8082 (this[offset + 3] * 0x1000000)
8083 }
8084
8085 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
8086 if (!noAssert) checkOffset(offset, 4, this.length)
8087
8088 return (this[offset] * 0x1000000) +
8089 ((this[offset + 1] << 16) |
8090 (this[offset + 2] << 8) |
8091 this[offset + 3])
8092 }
8093
8094 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
8095 offset = offset | 0
8096 byteLength = byteLength | 0
8097 if (!noAssert) checkOffset(offset, byteLength, this.length)
8098
8099 var val = this[offset]
8100 var mul = 1
8101 var i = 0
8102 while (++i < byteLength && (mul *= 0x100)) {
8103 val += this[offset + i] * mul
8104 }
8105 mul *= 0x80
8106
8107 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
8108
8109 return val
8110 }
8111
8112 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
8113 offset = offset | 0
8114 byteLength = byteLength | 0
8115 if (!noAssert) checkOffset(offset, byteLength, this.length)
8116
8117 var i = byteLength
8118 var mul = 1
8119 var val = this[offset + --i]
8120 while (i > 0 && (mul *= 0x100)) {
8121 val += this[offset + --i] * mul
8122 }
8123 mul *= 0x80
8124
8125 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
8126
8127 return val
8128 }
8129
8130 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
8131 if (!noAssert) checkOffset(offset, 1, this.length)
8132 if (!(this[offset] & 0x80)) return (this[offset])
8133 return ((0xff - this[offset] + 1) * -1)
8134 }
8135
8136 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
8137 if (!noAssert) checkOffset(offset, 2, this.length)
8138 var val = this[offset] | (this[offset + 1] << 8)
8139 return (val & 0x8000) ? val | 0xFFFF0000 : val
8140 }
8141
8142 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
8143 if (!noAssert) checkOffset(offset, 2, this.length)
8144 var val = this[offset + 1] | (this[offset] << 8)
8145 return (val & 0x8000) ? val | 0xFFFF0000 : val
8146 }
8147
8148 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
8149 if (!noAssert) checkOffset(offset, 4, this.length)
8150
8151 return (this[offset]) |
8152 (this[offset + 1] << 8) |
8153 (this[offset + 2] << 16) |
8154 (this[offset + 3] << 24)
8155 }
8156
8157 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
8158 if (!noAssert) checkOffset(offset, 4, this.length)
8159
8160 return (this[offset] << 24) |
8161 (this[offset + 1] << 16) |
8162 (this[offset + 2] << 8) |
8163 (this[offset + 3])
8164 }
8165
8166 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
8167 if (!noAssert) checkOffset(offset, 4, this.length)
8168 return ieee754.read(this, offset, true, 23, 4)
8169 }
8170
8171 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
8172 if (!noAssert) checkOffset(offset, 4, this.length)
8173 return ieee754.read(this, offset, false, 23, 4)
8174 }
8175
8176 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
8177 if (!noAssert) checkOffset(offset, 8, this.length)
8178 return ieee754.read(this, offset, true, 52, 8)
8179 }
8180
8181 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
8182 if (!noAssert) checkOffset(offset, 8, this.length)
8183 return ieee754.read(this, offset, false, 52, 8)
8184 }
8185
8186 function checkInt (buf, value, offset, ext, max, min) {
8187 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
8188 if (value > max || value < min) throw new RangeError('value is out of bounds')
8189 if (offset + ext > buf.length) throw new RangeError('index out of range')
8190 }
8191
8192 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
8193 value = +value
8194 offset = offset | 0
8195 byteLength = byteLength | 0
8196 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
8197
8198 var mul = 1
8199 var i = 0
8200 this[offset] = value & 0xFF
8201 while (++i < byteLength && (mul *= 0x100)) {
8202 this[offset + i] = (value / mul) & 0xFF
8203 }
8204
8205 return offset + byteLength
8206 }
8207
8208 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
8209 value = +value
8210 offset = offset | 0
8211 byteLength = byteLength | 0
8212 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
8213
8214 var i = byteLength - 1
8215 var mul = 1
8216 this[offset + i] = value & 0xFF
8217 while (--i >= 0 && (mul *= 0x100)) {
8218 this[offset + i] = (value / mul) & 0xFF
8219 }
8220
8221 return offset + byteLength
8222 }
8223
8224 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
8225 value = +value
8226 offset = offset | 0
8227 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
8228 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
8229 this[offset] = value
8230 return offset + 1
8231 }
8232
8233 function objectWriteUInt16 (buf, value, offset, littleEndian) {
8234 if (value < 0) value = 0xffff + value + 1
8235 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
8236 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
8237 (littleEndian ? i : 1 - i) * 8
8238 }
8239 }
8240
8241 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
8242 value = +value
8243 offset = offset | 0
8244 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
8245 if (Buffer.TYPED_ARRAY_SUPPORT) {
8246 this[offset] = value
8247 this[offset + 1] = (value >>> 8)
8248 } else {
8249 objectWriteUInt16(this, value, offset, true)
8250 }
8251 return offset + 2
8252 }
8253
8254 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
8255 value = +value
8256 offset = offset | 0
8257 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
8258 if (Buffer.TYPED_ARRAY_SUPPORT) {
8259 this[offset] = (value >>> 8)
8260 this[offset + 1] = value
8261 } else {
8262 objectWriteUInt16(this, value, offset, false)
8263 }
8264 return offset + 2
8265 }
8266
8267 function objectWriteUInt32 (buf, value, offset, littleEndian) {
8268 if (value < 0) value = 0xffffffff + value + 1
8269 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
8270 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
8271 }
8272 }
8273
8274 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
8275 value = +value
8276 offset = offset | 0
8277 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
8278 if (Buffer.TYPED_ARRAY_SUPPORT) {
8279 this[offset + 3] = (value >>> 24)
8280 this[offset + 2] = (value >>> 16)
8281 this[offset + 1] = (value >>> 8)
8282 this[offset] = value
8283 } else {
8284 objectWriteUInt32(this, value, offset, true)
8285 }
8286 return offset + 4
8287 }
8288
8289 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
8290 value = +value
8291 offset = offset | 0
8292 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
8293 if (Buffer.TYPED_ARRAY_SUPPORT) {
8294 this[offset] = (value >>> 24)
8295 this[offset + 1] = (value >>> 16)
8296 this[offset + 2] = (value >>> 8)
8297 this[offset + 3] = value
8298 } else {
8299 objectWriteUInt32(this, value, offset, false)
8300 }
8301 return offset + 4
8302 }
8303
8304 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
8305 value = +value
8306 offset = offset | 0
8307 if (!noAssert) {
8308 var limit = Math.pow(2, 8 * byteLength - 1)
8309
8310 checkInt(this, value, offset, byteLength, limit - 1, -limit)
8311 }
8312
8313 var i = 0
8314 var mul = 1
8315 var sub = value < 0 ? 1 : 0
8316 this[offset] = value & 0xFF
8317 while (++i < byteLength && (mul *= 0x100)) {
8318 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
8319 }
8320
8321 return offset + byteLength
8322 }
8323
8324 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
8325 value = +value
8326 offset = offset | 0
8327 if (!noAssert) {
8328 var limit = Math.pow(2, 8 * byteLength - 1)
8329
8330 checkInt(this, value, offset, byteLength, limit - 1, -limit)
8331 }
8332
8333 var i = byteLength - 1
8334 var mul = 1
8335 var sub = value < 0 ? 1 : 0
8336 this[offset + i] = value & 0xFF
8337 while (--i >= 0 && (mul *= 0x100)) {
8338 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
8339 }
8340
8341 return offset + byteLength
8342 }
8343
8344 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
8345 value = +value
8346 offset = offset | 0
8347 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
8348 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
8349 if (value < 0) value = 0xff + value + 1
8350 this[offset] = value
8351 return offset + 1
8352 }
8353
8354 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
8355 value = +value
8356 offset = offset | 0
8357 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
8358 if (Buffer.TYPED_ARRAY_SUPPORT) {
8359 this[offset] = value
8360 this[offset + 1] = (value >>> 8)
8361 } else {
8362 objectWriteUInt16(this, value, offset, true)
8363 }
8364 return offset + 2
8365 }
8366
8367 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
8368 value = +value
8369 offset = offset | 0
8370 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
8371 if (Buffer.TYPED_ARRAY_SUPPORT) {
8372 this[offset] = (value >>> 8)
8373 this[offset + 1] = value
8374 } else {
8375 objectWriteUInt16(this, value, offset, false)
8376 }
8377 return offset + 2
8378 }
8379
8380 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
8381 value = +value
8382 offset = offset | 0
8383 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
8384 if (Buffer.TYPED_ARRAY_SUPPORT) {
8385 this[offset] = value
8386 this[offset + 1] = (value >>> 8)
8387 this[offset + 2] = (value >>> 16)
8388 this[offset + 3] = (value >>> 24)
8389 } else {
8390 objectWriteUInt32(this, value, offset, true)
8391 }
8392 return offset + 4
8393 }
8394
8395 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
8396 value = +value
8397 offset = offset | 0
8398 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
8399 if (value < 0) value = 0xffffffff + value + 1
8400 if (Buffer.TYPED_ARRAY_SUPPORT) {
8401 this[offset] = (value >>> 24)
8402 this[offset + 1] = (value >>> 16)
8403 this[offset + 2] = (value >>> 8)
8404 this[offset + 3] = value
8405 } else {
8406 objectWriteUInt32(this, value, offset, false)
8407 }
8408 return offset + 4
8409 }
8410
8411 function checkIEEE754 (buf, value, offset, ext, max, min) {
8412 if (value > max || value < min) throw new RangeError('value is out of bounds')
8413 if (offset + ext > buf.length) throw new RangeError('index out of range')
8414 if (offset < 0) throw new RangeError('index out of range')
8415 }
8416
8417 function writeFloat (buf, value, offset, littleEndian, noAssert) {
8418 if (!noAssert) {
8419 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
8420 }
8421 ieee754.write(buf, value, offset, littleEndian, 23, 4)
8422 return offset + 4
8423 }
8424
8425 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
8426 return writeFloat(this, value, offset, true, noAssert)
8427 }
8428
8429 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
8430 return writeFloat(this, value, offset, false, noAssert)
8431 }
8432
8433 function writeDouble (buf, value, offset, littleEndian, noAssert) {
8434 if (!noAssert) {
8435 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
8436 }
8437 ieee754.write(buf, value, offset, littleEndian, 52, 8)
8438 return offset + 8
8439 }
8440
8441 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
8442 return writeDouble(this, value, offset, true, noAssert)
8443 }
8444
8445 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
8446 return writeDouble(this, value, offset, false, noAssert)
8447 }
8448
8449 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
8450 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
8451 if (!start) start = 0
8452 if (!end && end !== 0) end = this.length
8453 if (targetStart >= target.length) targetStart = target.length
8454 if (!targetStart) targetStart = 0
8455 if (end > 0 && end < start) end = start
8456
8457 // Copy 0 bytes; we're done
8458 if (end === start) return 0
8459 if (target.length === 0 || this.length === 0) return 0
8460
8461 // Fatal error conditions
8462 if (targetStart < 0) {
8463 throw new RangeError('targetStart out of bounds')
8464 }
8465 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
8466 if (end < 0) throw new RangeError('sourceEnd out of bounds')
8467
8468 // Are we oob?
8469 if (end > this.length) end = this.length
8470 if (target.length - targetStart < end - start) {
8471 end = target.length - targetStart + start
8472 }
8473
8474 var len = end - start
8475 var i
8476
8477 if (this === target && start < targetStart && targetStart < end) {
8478 // descending copy from end
8479 for (i = len - 1; i >= 0; i--) {
8480 target[i + targetStart] = this[i + start]
8481 }
8482 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
8483 // ascending copy from start
8484 for (i = 0; i < len; i++) {
8485 target[i + targetStart] = this[i + start]
8486 }
8487 } else {
8488 target._set(this.subarray(start, start + len), targetStart)
8489 }
8490
8491 return len
8492 }
8493
8494 // fill(value, start=0, end=buffer.length)
8495 Buffer.prototype.fill = function fill (value, start, end) {
8496 if (!value) value = 0
8497 if (!start) start = 0
8498 if (!end) end = this.length
8499
8500 if (end < start) throw new RangeError('end < start')
8501
8502 // Fill 0 bytes; we're done
8503 if (end === start) return
8504 if (this.length === 0) return
8505
8506 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
8507 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
8508
8509 var i
8510 if (typeof value === 'number') {
8511 for (i = start; i < end; i++) {
8512 this[i] = value
8513 }
8514 } else {
8515 var bytes = utf8ToBytes(value.toString())
8516 var len = bytes.length
8517 for (i = start; i < end; i++) {
8518 this[i] = bytes[i % len]
8519 }
8520 }
8521
8522 return this
8523 }
8524
8525 /**
8526 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
8527 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
8528 */
8529 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
8530 if (typeof Uint8Array !== 'undefined') {
8531 if (Buffer.TYPED_ARRAY_SUPPORT) {
8532 return (new Buffer(this)).buffer
8533 } else {
8534 var buf = new Uint8Array(this.length)
8535 for (var i = 0, len = buf.length; i < len; i += 1) {
8536 buf[i] = this[i]
8537 }
8538 return buf.buffer
8539 }
8540 } else {
8541 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
8542 }
8543 }
8544
8545 // HELPER FUNCTIONS
8546 // ================
8547
8548 var BP = Buffer.prototype
8549
8550 /**
8551 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
8552 */
8553 Buffer._augment = function _augment (arr) {
8554 arr.constructor = Buffer
8555 arr._isBuffer = true
8556
8557 // save reference to original Uint8Array set method before overwriting
8558 arr._set = arr.set
8559
8560 // deprecated
8561 arr.get = BP.get
8562 arr.set = BP.set
8563
8564 arr.write = BP.write
8565 arr.toString = BP.toString
8566 arr.toLocaleString = BP.toString
8567 arr.toJSON = BP.toJSON
8568 arr.equals = BP.equals
8569 arr.compare = BP.compare
8570 arr.indexOf = BP.indexOf
8571 arr.copy = BP.copy
8572 arr.slice = BP.slice
8573 arr.readUIntLE = BP.readUIntLE
8574 arr.readUIntBE = BP.readUIntBE
8575 arr.readUInt8 = BP.readUInt8
8576 arr.readUInt16LE = BP.readUInt16LE
8577 arr.readUInt16BE = BP.readUInt16BE
8578 arr.readUInt32LE = BP.readUInt32LE
8579 arr.readUInt32BE = BP.readUInt32BE
8580 arr.readIntLE = BP.readIntLE
8581 arr.readIntBE = BP.readIntBE
8582 arr.readInt8 = BP.readInt8
8583 arr.readInt16LE = BP.readInt16LE
8584 arr.readInt16BE = BP.readInt16BE
8585 arr.readInt32LE = BP.readInt32LE
8586 arr.readInt32BE = BP.readInt32BE
8587 arr.readFloatLE = BP.readFloatLE
8588 arr.readFloatBE = BP.readFloatBE
8589 arr.readDoubleLE = BP.readDoubleLE
8590 arr.readDoubleBE = BP.readDoubleBE
8591 arr.writeUInt8 = BP.writeUInt8
8592 arr.writeUIntLE = BP.writeUIntLE
8593 arr.writeUIntBE = BP.writeUIntBE
8594 arr.writeUInt16LE = BP.writeUInt16LE
8595 arr.writeUInt16BE = BP.writeUInt16BE
8596 arr.writeUInt32LE = BP.writeUInt32LE
8597 arr.writeUInt32BE = BP.writeUInt32BE
8598 arr.writeIntLE = BP.writeIntLE
8599 arr.writeIntBE = BP.writeIntBE
8600 arr.writeInt8 = BP.writeInt8
8601 arr.writeInt16LE = BP.writeInt16LE
8602 arr.writeInt16BE = BP.writeInt16BE
8603 arr.writeInt32LE = BP.writeInt32LE
8604 arr.writeInt32BE = BP.writeInt32BE
8605 arr.writeFloatLE = BP.writeFloatLE
8606 arr.writeFloatBE = BP.writeFloatBE
8607 arr.writeDoubleLE = BP.writeDoubleLE
8608 arr.writeDoubleBE = BP.writeDoubleBE
8609 arr.fill = BP.fill
8610 arr.inspect = BP.inspect
8611 arr.toArrayBuffer = BP.toArrayBuffer
8612
8613 return arr
8614 }
8615
8616 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
8617
8618 function base64clean (str) {
8619 // Node strips out invalid characters like \n and \t from the string, base64-js does not
8620 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
8621 // Node converts strings with length < 2 to ''
8622 if (str.length < 2) return ''
8623 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
8624 while (str.length % 4 !== 0) {
8625 str = str + '='
8626 }
8627 return str
8628 }
8629
8630 function stringtrim (str) {
8631 if (str.trim) return str.trim()
8632 return str.replace(/^\s+|\s+$/g, '')
8633 }
8634
8635 function toHex (n) {
8636 if (n < 16) return '0' + n.toString(16)
8637 return n.toString(16)
8638 }
8639
8640 function utf8ToBytes (string, units) {
8641 units = units || Infinity
8642 var codePoint
8643 var length = string.length
8644 var leadSurrogate = null
8645 var bytes = []
8646
8647 for (var i = 0; i < length; i++) {
8648 codePoint = string.charCodeAt(i)
8649
8650 // is surrogate component
8651 if (codePoint > 0xD7FF && codePoint < 0xE000) {
8652 // last char was a lead
8653 if (!leadSurrogate) {
8654 // no lead yet
8655 if (codePoint > 0xDBFF) {
8656 // unexpected trail
8657 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8658 continue
8659
8660 } else if (i + 1 === length) {
8661 // unpaired lead
8662 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8663 continue
8664 }
8665
8666 // valid lead
8667 leadSurrogate = codePoint
8668
8669 continue
8670 }
8671
8672 // 2 leads in a row
8673 if (codePoint < 0xDC00) {
8674 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8675 leadSurrogate = codePoint
8676 continue
8677 }
8678
8679 // valid surrogate pair
8680 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
8681
8682 } else if (leadSurrogate) {
8683 // valid bmp char, but last char was a lead
8684 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8685 }
8686
8687 leadSurrogate = null
8688
8689 // encode utf8
8690 if (codePoint < 0x80) {
8691 if ((units -= 1) < 0) break
8692 bytes.push(codePoint)
8693 } else if (codePoint < 0x800) {
8694 if ((units -= 2) < 0) break
8695 bytes.push(
8696 codePoint >> 0x6 | 0xC0,
8697 codePoint & 0x3F | 0x80
8698 )
8699 } else if (codePoint < 0x10000) {
8700 if ((units -= 3) < 0) break
8701 bytes.push(
8702 codePoint >> 0xC | 0xE0,
8703 codePoint >> 0x6 & 0x3F | 0x80,
8704 codePoint & 0x3F | 0x80
8705 )
8706 } else if (codePoint < 0x110000) {
8707 if ((units -= 4) < 0) break
8708 bytes.push(
8709 codePoint >> 0x12 | 0xF0,
8710 codePoint >> 0xC & 0x3F | 0x80,
8711 codePoint >> 0x6 & 0x3F | 0x80,
8712 codePoint & 0x3F | 0x80
8713 )
8714 } else {
8715 throw new Error('Invalid code point')
8716 }
8717 }
8718
8719 return bytes
8720 }
8721
8722 function asciiToBytes (str) {
8723 var byteArray = []
8724 for (var i = 0; i < str.length; i++) {
8725 // Node's code seems to be doing this and not & 0x7F..
8726 byteArray.push(str.charCodeAt(i) & 0xFF)
8727 }
8728 return byteArray
8729 }
8730
8731 function utf16leToBytes (str, units) {
8732 var c, hi, lo
8733 var byteArray = []
8734 for (var i = 0; i < str.length; i++) {
8735 if ((units -= 2) < 0) break
8736
8737 c = str.charCodeAt(i)
8738 hi = c >> 8
8739 lo = c % 256
8740 byteArray.push(lo)
8741 byteArray.push(hi)
8742 }
8743
8744 return byteArray
8745 }
8746
8747 function base64ToBytes (str) {
8748 return base64.toByteArray(base64clean(str))
8749 }
8750
8751 function blitBuffer (src, dst, offset, length) {
8752 for (var i = 0; i < length; i++) {
8753 if ((i + offset >= dst.length) || (i >= src.length)) break
8754 dst[i + offset] = src[i]
8755 }
8756 return i
8757 }
8758
8759 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
8760 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
8761
8762 ;(function (exports) {
8763 'use strict';
8764
8765 var Arr = (typeof Uint8Array !== 'undefined')
8766 ? Uint8Array
8767 : Array
8768
8769 var PLUS = '+'.charCodeAt(0)
8770 var SLASH = '/'.charCodeAt(0)
8771 var NUMBER = '0'.charCodeAt(0)
8772 var LOWER = 'a'.charCodeAt(0)
8773 var UPPER = 'A'.charCodeAt(0)
8774 var PLUS_URL_SAFE = '-'.charCodeAt(0)
8775 var SLASH_URL_SAFE = '_'.charCodeAt(0)
8776
8777 function decode (elt) {
8778 var code = elt.charCodeAt(0)
8779 if (code === PLUS ||
8780 code === PLUS_URL_SAFE)
8781 return 62 // '+'
8782 if (code === SLASH ||
8783 code === SLASH_URL_SAFE)
8784 return 63 // '/'
8785 if (code < NUMBER)
8786 return -1 //no match
8787 if (code < NUMBER + 10)
8788 return code - NUMBER + 26 + 26
8789 if (code < UPPER + 26)
8790 return code - UPPER
8791 if (code < LOWER + 26)
8792 return code - LOWER + 26
8793 }
8794
8795 function b64ToByteArray (b64) {
8796 var i, j, l, tmp, placeHolders, arr
8797
8798 if (b64.length % 4 > 0) {
8799 throw new Error('Invalid string. Length must be a multiple of 4')
8800 }
8801
8802 // the number of equal signs (place holders)
8803 // if there are two placeholders, than the two characters before it
8804 // represent one byte
8805 // if there is only one, then the three characters before it represent 2 bytes
8806 // this is just a cheap hack to not do indexOf twice
8807 var len = b64.length
8808 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
8809
8810 // base64 is 4/3 + up to two characters of the original data
8811 arr = new Arr(b64.length * 3 / 4 - placeHolders)
8812
8813 // if there are placeholders, only get up to the last complete 4 chars
8814 l = placeHolders > 0 ? b64.length - 4 : b64.length
8815
8816 var L = 0
8817
8818 function push (v) {
8819 arr[L++] = v
8820 }
8821
8822 for (i = 0, j = 0; i < l; i += 4, j += 3) {
8823 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
8824 push((tmp & 0xFF0000) >> 16)
8825 push((tmp & 0xFF00) >> 8)
8826 push(tmp & 0xFF)
8827 }
8828
8829 if (placeHolders === 2) {
8830 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
8831 push(tmp & 0xFF)
8832 } else if (placeHolders === 1) {
8833 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
8834 push((tmp >> 8) & 0xFF)
8835 push(tmp & 0xFF)
8836 }
8837
8838 return arr
8839 }
8840
8841 function uint8ToBase64 (uint8) {
8842 var i,
8843 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
8844 output = "",
8845 temp, length
8846
8847 function encode (num) {
8848 return lookup.charAt(num)
8849 }
8850
8851 function tripletToBase64 (num) {
8852 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
8853 }
8854
8855 // go through the array every three bytes, we'll deal with trailing stuff later
8856 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
8857 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
8858 output += tripletToBase64(temp)
8859 }
8860
8861 // pad the end with zeros, but make sure to not forget the extra bytes
8862 switch (extraBytes) {
8863 case 1:
8864 temp = uint8[uint8.length - 1]
8865 output += encode(temp >> 2)
8866 output += encode((temp << 4) & 0x3F)
8867 output += '=='
8868 break
8869 case 2:
8870 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
8871 output += encode(temp >> 10)
8872 output += encode((temp >> 4) & 0x3F)
8873 output += encode((temp << 2) & 0x3F)
8874 output += '='
8875 break
8876 }
8877
8878 return output
8879 }
8880
8881 exports.toByteArray = b64ToByteArray
8882 exports.fromByteArray = uint8ToBase64
8883 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
8884
8885 },{}],9:[function(require,module,exports){
8886 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
8887 var e, m
8888 var eLen = nBytes * 8 - mLen - 1
8889 var eMax = (1 << eLen) - 1
8890 var eBias = eMax >> 1
8891 var nBits = -7
8892 var i = isLE ? (nBytes - 1) : 0
8893 var d = isLE ? -1 : 1
8894 var s = buffer[offset + i]
8895
8896 i += d
8897
8898 e = s & ((1 << (-nBits)) - 1)
8899 s >>= (-nBits)
8900 nBits += eLen
8901 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8902
8903 m = e & ((1 << (-nBits)) - 1)
8904 e >>= (-nBits)
8905 nBits += mLen
8906 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8907
8908 if (e === 0) {
8909 e = 1 - eBias
8910 } else if (e === eMax) {
8911 return m ? NaN : ((s ? -1 : 1) * Infinity)
8912 } else {
8913 m = m + Math.pow(2, mLen)
8914 e = e - eBias
8915 }
8916 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
8917 }
8918
8919 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
8920 var e, m, c
8921 var eLen = nBytes * 8 - mLen - 1
8922 var eMax = (1 << eLen) - 1
8923 var eBias = eMax >> 1
8924 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
8925 var i = isLE ? 0 : (nBytes - 1)
8926 var d = isLE ? 1 : -1
8927 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
8928
8929 value = Math.abs(value)
8930
8931 if (isNaN(value) || value === Infinity) {
8932 m = isNaN(value) ? 1 : 0
8933 e = eMax
8934 } else {
8935 e = Math.floor(Math.log(value) / Math.LN2)
8936 if (value * (c = Math.pow(2, -e)) < 1) {
8937 e--
8938 c *= 2
8939 }
8940 if (e + eBias >= 1) {
8941 value += rt / c
8942 } else {
8943 value += rt * Math.pow(2, 1 - eBias)
8944 }
8945 if (value * c >= 2) {
8946 e++
8947 c /= 2
8948 }
8949
8950 if (e + eBias >= eMax) {
8951 m = 0
8952 e = eMax
8953 } else if (e + eBias >= 1) {
8954 m = (value * c - 1) * Math.pow(2, mLen)
8955 e = e + eBias
8956 } else {
8957 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
8958 e = 0
8959 }
8960 }
8961
8962 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
8963
8964 e = (e << mLen) | m
8965 eLen += mLen
8966 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
8967
8968 buffer[offset + i - d] |= s * 128
8969 }
8970
8971 },{}],10:[function(require,module,exports){
8972
8973 /**
8974 * isArray
8975 */
8976
8977 var isArray = Array.isArray;
8978
8979 /**
8980 * toString
8981 */
8982
8983 var str = Object.prototype.toString;
8984
8985 /**
8986 * Whether or not the given `val`
8987 * is an array.
8988 *
8989 * example:
8990 *
8991 * isArray([]);
8992 * // > true
8993 * isArray(arguments);
8994 * // > false
8995 * isArray('');
8996 * // > false
8997 *
8998 * @param {mixed} val
8999 * @return {bool}
9000 */
9001
9002 module.exports = isArray || function (val) {
9003 return !! val && '[object Array]' == str.call(val);
9004 };
9005
9006 },{}],11:[function(require,module,exports){
9007 // Copyright Joyent, Inc. and other Node contributors.
9008 //
9009 // Permission is hereby granted, free of charge, to any person obtaining a
9010 // copy of this software and associated documentation files (the
9011 // "Software"), to deal in the Software without restriction, including
9012 // without limitation the rights to use, copy, modify, merge, publish,
9013 // distribute, sublicense, and/or sell copies of the Software, and to permit
9014 // persons to whom the Software is furnished to do so, subject to the
9015 // following conditions:
9016 //
9017 // The above copyright notice and this permission notice shall be included
9018 // in all copies or substantial portions of the Software.
9019 //
9020 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9021 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9022 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9023 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9024 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9025 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9026 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9027
9028 function EventEmitter() {
9029 this._events = this._events || {};
9030 this._maxListeners = this._maxListeners || undefined;
9031 }
9032 module.exports = EventEmitter;
9033
9034 // Backwards-compat with node 0.10.x
9035 EventEmitter.EventEmitter = EventEmitter;
9036
9037 EventEmitter.prototype._events = undefined;
9038 EventEmitter.prototype._maxListeners = undefined;
9039
9040 // By default EventEmitters will print a warning if more than 10 listeners are
9041 // added to it. This is a useful default which helps finding memory leaks.
9042 EventEmitter.defaultMaxListeners = 10;
9043
9044 // Obviously not all Emitters should be limited to 10. This function allows
9045 // that to be increased. Set to zero for unlimited.
9046 EventEmitter.prototype.setMaxListeners = function(n) {
9047 if (!isNumber(n) || n < 0 || isNaN(n))
9048 throw TypeError('n must be a positive number');
9049 this._maxListeners = n;
9050 return this;
9051 };
9052
9053 EventEmitter.prototype.emit = function(type) {
9054 var er, handler, len, args, i, listeners;
9055
9056 if (!this._events)
9057 this._events = {};
9058
9059 // If there is no 'error' event listener then throw.
9060 if (type === 'error') {
9061 if (!this._events.error ||
9062 (isObject(this._events.error) && !this._events.error.length)) {
9063 er = arguments[1];
9064 if (er instanceof Error) {
9065 throw er; // Unhandled 'error' event
9066 }
9067 throw TypeError('Uncaught, unspecified "error" event.');
9068 }
9069 }
9070
9071 handler = this._events[type];
9072
9073 if (isUndefined(handler))
9074 return false;
9075
9076 if (isFunction(handler)) {
9077 switch (arguments.length) {
9078 // fast cases
9079 case 1:
9080 handler.call(this);
9081 break;
9082 case 2:
9083 handler.call(this, arguments[1]);
9084 break;
9085 case 3:
9086 handler.call(this, arguments[1], arguments[2]);
9087 break;
9088 // slower
9089 default:
9090 len = arguments.length;
9091 args = new Array(len - 1);
9092 for (i = 1; i < len; i++)
9093 args[i - 1] = arguments[i];
9094 handler.apply(this, args);
9095 }
9096 } else if (isObject(handler)) {
9097 len = arguments.length;
9098 args = new Array(len - 1);
9099 for (i = 1; i < len; i++)
9100 args[i - 1] = arguments[i];
9101
9102 listeners = handler.slice();
9103 len = listeners.length;
9104 for (i = 0; i < len; i++)
9105 listeners[i].apply(this, args);
9106 }
9107
9108 return true;
9109 };
9110
9111 EventEmitter.prototype.addListener = function(type, listener) {
9112 var m;
9113
9114 if (!isFunction(listener))
9115 throw TypeError('listener must be a function');
9116
9117 if (!this._events)
9118 this._events = {};
9119
9120 // To avoid recursion in the case that type === "newListener"! Before
9121 // adding it to the listeners, first emit "newListener".
9122 if (this._events.newListener)
9123 this.emit('newListener', type,
9124 isFunction(listener.listener) ?
9125 listener.listener : listener);
9126
9127 if (!this._events[type])
9128 // Optimize the case of one listener. Don't need the extra array object.
9129 this._events[type] = listener;
9130 else if (isObject(this._events[type]))
9131 // If we've already got an array, just append.
9132 this._events[type].push(listener);
9133 else
9134 // Adding the second element, need to change to array.
9135 this._events[type] = [this._events[type], listener];
9136
9137 // Check for listener leak
9138 if (isObject(this._events[type]) && !this._events[type].warned) {
9139 var m;
9140 if (!isUndefined(this._maxListeners)) {
9141 m = this._maxListeners;
9142 } else {
9143 m = EventEmitter.defaultMaxListeners;
9144 }
9145
9146 if (m && m > 0 && this._events[type].length > m) {
9147 this._events[type].warned = true;
9148 console.error('(node) warning: possible EventEmitter memory ' +
9149 'leak detected. %d listeners added. ' +
9150 'Use emitter.setMaxListeners() to increase limit.',
9151 this._events[type].length);
9152 if (typeof console.trace === 'function') {
9153 // not supported in IE 10
9154 console.trace();
9155 }
9156 }
9157 }
9158
9159 return this;
9160 };
9161
9162 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9163
9164 EventEmitter.prototype.once = function(type, listener) {
9165 if (!isFunction(listener))
9166 throw TypeError('listener must be a function');
9167
9168 var fired = false;
9169
9170 function g() {
9171 this.removeListener(type, g);
9172
9173 if (!fired) {
9174 fired = true;
9175 listener.apply(this, arguments);
9176 }
9177 }
9178
9179 g.listener = listener;
9180 this.on(type, g);
9181
9182 return this;
9183 };
9184
9185 // emits a 'removeListener' event iff the listener was removed
9186 EventEmitter.prototype.removeListener = function(type, listener) {
9187 var list, position, length, i;
9188
9189 if (!isFunction(listener))
9190 throw TypeError('listener must be a function');
9191
9192 if (!this._events || !this._events[type])
9193 return this;
9194
9195 list = this._events[type];
9196 length = list.length;
9197 position = -1;
9198
9199 if (list === listener ||
9200 (isFunction(list.listener) && list.listener === listener)) {
9201 delete this._events[type];
9202 if (this._events.removeListener)
9203 this.emit('removeListener', type, listener);
9204
9205 } else if (isObject(list)) {
9206 for (i = length; i-- > 0;) {
9207 if (list[i] === listener ||
9208 (list[i].listener && list[i].listener === listener)) {
9209 position = i;
9210 break;
9211 }
9212 }
9213
9214 if (position < 0)
9215 return this;
9216
9217 if (list.length === 1) {
9218 list.length = 0;
9219 delete this._events[type];
9220 } else {
9221 list.splice(position, 1);
9222 }
9223
9224 if (this._events.removeListener)
9225 this.emit('removeListener', type, listener);
9226 }
9227
9228 return this;
9229 };
9230
9231 EventEmitter.prototype.removeAllListeners = function(type) {
9232 var key, listeners;
9233
9234 if (!this._events)
9235 return this;
9236
9237 // not listening for removeListener, no need to emit
9238 if (!this._events.removeListener) {
9239 if (arguments.length === 0)
9240 this._events = {};
9241 else if (this._events[type])
9242 delete this._events[type];
9243 return this;
9244 }
9245
9246 // emit removeListener for all listeners on all events
9247 if (arguments.length === 0) {
9248 for (key in this._events) {
9249 if (key === 'removeListener') continue;
9250 this.removeAllListeners(key);
9251 }
9252 this.removeAllListeners('removeListener');
9253 this._events = {};
9254 return this;
9255 }
9256
9257 listeners = this._events[type];
9258
9259 if (isFunction(listeners)) {
9260 this.removeListener(type, listeners);
9261 } else {
9262 // LIFO order
9263 while (listeners.length)
9264 this.removeListener(type, listeners[listeners.length - 1]);
9265 }
9266 delete this._events[type];
9267
9268 return this;
9269 };
9270
9271 EventEmitter.prototype.listeners = function(type) {
9272 var ret;
9273 if (!this._events || !this._events[type])
9274 ret = [];
9275 else if (isFunction(this._events[type]))
9276 ret = [this._events[type]];
9277 else
9278 ret = this._events[type].slice();
9279 return ret;
9280 };
9281
9282 EventEmitter.listenerCount = function(emitter, type) {
9283 var ret;
9284 if (!emitter._events || !emitter._events[type])
9285 ret = 0;
9286 else if (isFunction(emitter._events[type]))
9287 ret = 1;
9288 else
9289 ret = emitter._events[type].length;
9290 return ret;
9291 };
9292
9293 function isFunction(arg) {
9294 return typeof arg === 'function';
9295 }
9296
9297 function isNumber(arg) {
9298 return typeof arg === 'number';
9299 }
9300
9301 function isObject(arg) {
9302 return typeof arg === 'object' && arg !== null;
9303 }
9304
9305 function isUndefined(arg) {
9306 return arg === void 0;
9307 }
9308
9309 },{}],12:[function(require,module,exports){
9310 if (typeof Object.create === 'function') {
9311 // implementation from standard node.js 'util' module
9312 module.exports = function inherits(ctor, superCtor) {
9313 ctor.super_ = superCtor
9314 ctor.prototype = Object.create(superCtor.prototype, {
9315 constructor: {
9316 value: ctor,
9317 enumerable: false,
9318 writable: true,
9319 configurable: true
9320 }
9321 });
9322 };
9323 } else {
9324 // old school shim for old browsers
9325 module.exports = function inherits(ctor, superCtor) {
9326 ctor.super_ = superCtor
9327 var TempCtor = function () {}
9328 TempCtor.prototype = superCtor.prototype
9329 ctor.prototype = new TempCtor()
9330 ctor.prototype.constructor = ctor
9331 }
9332 }
9333
9334 },{}],13:[function(require,module,exports){
9335 module.exports = Array.isArray || function (arr) {
9336 return Object.prototype.toString.call(arr) == '[object Array]';
9337 };
9338
9339 },{}],14:[function(require,module,exports){
9340 // shim for using process in browser
9341
9342 var process = module.exports = {};
9343 var queue = [];
9344 var draining = false;
9345 var currentQueue;
9346 var queueIndex = -1;
9347
9348 function cleanUpNextTick() {
9349 draining = false;
9350 if (currentQueue.length) {
9351 queue = currentQueue.concat(queue);
9352 } else {
9353 queueIndex = -1;
9354 }
9355 if (queue.length) {
9356 drainQueue();
9357 }
9358 }
9359
9360 function drainQueue() {
9361 if (draining) {
9362 return;
9363 }
9364 var timeout = setTimeout(cleanUpNextTick);
9365 draining = true;
9366
9367 var len = queue.length;
9368 while(len) {
9369 currentQueue = queue;
9370 queue = [];
9371 while (++queueIndex < len) {
9372 currentQueue[queueIndex].run();
9373 }
9374 queueIndex = -1;
9375 len = queue.length;
9376 }
9377 currentQueue = null;
9378 draining = false;
9379 clearTimeout(timeout);
9380 }
9381
9382 process.nextTick = function (fun) {
9383 var args = new Array(arguments.length - 1);
9384 if (arguments.length > 1) {
9385 for (var i = 1; i < arguments.length; i++) {
9386 args[i - 1] = arguments[i];
9387 }
9388 }
9389 queue.push(new Item(fun, args));
9390 if (queue.length === 1 && !draining) {
9391 setTimeout(drainQueue, 0);
9392 }
9393 };
9394
9395 // v8 likes predictible objects
9396 function Item(fun, array) {
9397 this.fun = fun;
9398 this.array = array;
9399 }
9400 Item.prototype.run = function () {
9401 this.fun.apply(null, this.array);
9402 };
9403 process.title = 'browser';
9404 process.browser = true;
9405 process.env = {};
9406 process.argv = [];
9407 process.version = ''; // empty string to avoid regexp issues
9408 process.versions = {};
9409
9410 function noop() {}
9411
9412 process.on = noop;
9413 process.addListener = noop;
9414 process.once = noop;
9415 process.off = noop;
9416 process.removeListener = noop;
9417 process.removeAllListeners = noop;
9418 process.emit = noop;
9419
9420 process.binding = function (name) {
9421 throw new Error('process.binding is not supported');
9422 };
9423
9424 // TODO(shtylman)
9425 process.cwd = function () { return '/' };
9426 process.chdir = function (dir) {
9427 throw new Error('process.chdir is not supported');
9428 };
9429 process.umask = function() { return 0; };
9430
9431 },{}],15:[function(require,module,exports){
9432 module.exports = require("./lib/_stream_duplex.js")
9433
9434 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
9435 (function (process){
9436 // Copyright Joyent, Inc. and other Node contributors.
9437 //
9438 // Permission is hereby granted, free of charge, to any person obtaining a
9439 // copy of this software and associated documentation files (the
9440 // "Software"), to deal in the Software without restriction, including
9441 // without limitation the rights to use, copy, modify, merge, publish,
9442 // distribute, sublicense, and/or sell copies of the Software, and to permit
9443 // persons to whom the Software is furnished to do so, subject to the
9444 // following conditions:
9445 //
9446 // The above copyright notice and this permission notice shall be included
9447 // in all copies or substantial portions of the Software.
9448 //
9449 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9450 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9451 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9452 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9453 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9454 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9455 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9456
9457 // a duplex stream is just a stream that is both readable and writable.
9458 // Since JS doesn't have multiple prototypal inheritance, this class
9459 // prototypally inherits from Readable, and then parasitically from
9460 // Writable.
9461
9462 module.exports = Duplex;
9463
9464 /*<replacement>*/
9465 var objectKeys = Object.keys || function (obj) {
9466 var keys = [];
9467 for (var key in obj) keys.push(key);
9468 return keys;
9469 }
9470 /*</replacement>*/
9471
9472
9473 /*<replacement>*/
9474 var util = require('core-util-is');
9475 util.inherits = require('inherits');
9476 /*</replacement>*/
9477
9478 var Readable = require('./_stream_readable');
9479 var Writable = require('./_stream_writable');
9480
9481 util.inherits(Duplex, Readable);
9482
9483 forEach(objectKeys(Writable.prototype), function(method) {
9484 if (!Duplex.prototype[method])
9485 Duplex.prototype[method] = Writable.prototype[method];
9486 });
9487
9488 function Duplex(options) {
9489 if (!(this instanceof Duplex))
9490 return new Duplex(options);
9491
9492 Readable.call(this, options);
9493 Writable.call(this, options);
9494
9495 if (options && options.readable === false)
9496 this.readable = false;
9497
9498 if (options && options.writable === false)
9499 this.writable = false;
9500
9501 this.allowHalfOpen = true;
9502 if (options && options.allowHalfOpen === false)
9503 this.allowHalfOpen = false;
9504
9505 this.once('end', onend);
9506 }
9507
9508 // the no-half-open enforcer
9509 function onend() {
9510 // if we allow half-open state, or if the writable side ended,
9511 // then we're ok.
9512 if (this.allowHalfOpen || this._writableState.ended)
9513 return;
9514
9515 // no more data can be written.
9516 // But allow more writes to happen in this tick.
9517 process.nextTick(this.end.bind(this));
9518 }
9519
9520 function forEach (xs, f) {
9521 for (var i = 0, l = xs.length; i < l; i++) {
9522 f(xs[i], i);
9523 }
9524 }
9525
9526 }).call(this,require('_process'))
9527 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
9528 // Copyright Joyent, Inc. and other Node contributors.
9529 //
9530 // Permission is hereby granted, free of charge, to any person obtaining a
9531 // copy of this software and associated documentation files (the
9532 // "Software"), to deal in the Software without restriction, including
9533 // without limitation the rights to use, copy, modify, merge, publish,
9534 // distribute, sublicense, and/or sell copies of the Software, and to permit
9535 // persons to whom the Software is furnished to do so, subject to the
9536 // following conditions:
9537 //
9538 // The above copyright notice and this permission notice shall be included
9539 // in all copies or substantial portions of the Software.
9540 //
9541 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9542 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9543 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9544 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9545 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9546 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9547 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9548
9549 // a passthrough stream.
9550 // basically just the most minimal sort of Transform stream.
9551 // Every written chunk gets output as-is.
9552
9553 module.exports = PassThrough;
9554
9555 var Transform = require('./_stream_transform');
9556
9557 /*<replacement>*/
9558 var util = require('core-util-is');
9559 util.inherits = require('inherits');
9560 /*</replacement>*/
9561
9562 util.inherits(PassThrough, Transform);
9563
9564 function PassThrough(options) {
9565 if (!(this instanceof PassThrough))
9566 return new PassThrough(options);
9567
9568 Transform.call(this, options);
9569 }
9570
9571 PassThrough.prototype._transform = function(chunk, encoding, cb) {
9572 cb(null, chunk);
9573 };
9574
9575 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
9576 (function (process){
9577 // Copyright Joyent, Inc. and other Node contributors.
9578 //
9579 // Permission is hereby granted, free of charge, to any person obtaining a
9580 // copy of this software and associated documentation files (the
9581 // "Software"), to deal in the Software without restriction, including
9582 // without limitation the rights to use, copy, modify, merge, publish,
9583 // distribute, sublicense, and/or sell copies of the Software, and to permit
9584 // persons to whom the Software is furnished to do so, subject to the
9585 // following conditions:
9586 //
9587 // The above copyright notice and this permission notice shall be included
9588 // in all copies or substantial portions of the Software.
9589 //
9590 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9591 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9592 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9593 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9594 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9595 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9596 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9597
9598 module.exports = Readable;
9599
9600 /*<replacement>*/
9601 var isArray = require('isarray');
9602 /*</replacement>*/
9603
9604
9605 /*<replacement>*/
9606 var Buffer = require('buffer').Buffer;
9607 /*</replacement>*/
9608
9609 Readable.ReadableState = ReadableState;
9610
9611 var EE = require('events').EventEmitter;
9612
9613 /*<replacement>*/
9614 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
9615 return emitter.listeners(type).length;
9616 };
9617 /*</replacement>*/
9618
9619 var Stream = require('stream');
9620
9621 /*<replacement>*/
9622 var util = require('core-util-is');
9623 util.inherits = require('inherits');
9624 /*</replacement>*/
9625
9626 var StringDecoder;
9627
9628
9629 /*<replacement>*/
9630 var debug = require('util');
9631 if (debug && debug.debuglog) {
9632 debug = debug.debuglog('stream');
9633 } else {
9634 debug = function () {};
9635 }
9636 /*</replacement>*/
9637
9638
9639 util.inherits(Readable, Stream);
9640
9641 function ReadableState(options, stream) {
9642 var Duplex = require('./_stream_duplex');
9643
9644 options = options || {};
9645
9646 // the point at which it stops calling _read() to fill the buffer
9647 // Note: 0 is a valid value, means "don't call _read preemptively ever"
9648 var hwm = options.highWaterMark;
9649 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
9650 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
9651
9652 // cast to ints.
9653 this.highWaterMark = ~~this.highWaterMark;
9654
9655 this.buffer = [];
9656 this.length = 0;
9657 this.pipes = null;
9658 this.pipesCount = 0;
9659 this.flowing = null;
9660 this.ended = false;
9661 this.endEmitted = false;
9662 this.reading = false;
9663
9664 // a flag to be able to tell if the onwrite cb is called immediately,
9665 // or on a later tick. We set this to true at first, because any
9666 // actions that shouldn't happen until "later" should generally also
9667 // not happen before the first write call.
9668 this.sync = true;
9669
9670 // whenever we return null, then we set a flag to say
9671 // that we're awaiting a 'readable' event emission.
9672 this.needReadable = false;
9673 this.emittedReadable = false;
9674 this.readableListening = false;
9675
9676
9677 // object stream flag. Used to make read(n) ignore n and to
9678 // make all the buffer merging and length checks go away
9679 this.objectMode = !!options.objectMode;
9680
9681 if (stream instanceof Duplex)
9682 this.objectMode = this.objectMode || !!options.readableObjectMode;
9683
9684 // Crypto is kind of old and crusty. Historically, its default string
9685 // encoding is 'binary' so we have to make this configurable.
9686 // Everything else in the universe uses 'utf8', though.
9687 this.defaultEncoding = options.defaultEncoding || 'utf8';
9688
9689 // when piping, we only care about 'readable' events that happen
9690 // after read()ing all the bytes and not getting any pushback.
9691 this.ranOut = false;
9692
9693 // the number of writers that are awaiting a drain event in .pipe()s
9694 this.awaitDrain = 0;
9695
9696 // if true, a maybeReadMore has been scheduled
9697 this.readingMore = false;
9698
9699 this.decoder = null;
9700 this.encoding = null;
9701 if (options.encoding) {
9702 if (!StringDecoder)
9703 StringDecoder = require('string_decoder/').StringDecoder;
9704 this.decoder = new StringDecoder(options.encoding);
9705 this.encoding = options.encoding;
9706 }
9707 }
9708
9709 function Readable(options) {
9710 var Duplex = require('./_stream_duplex');
9711
9712 if (!(this instanceof Readable))
9713 return new Readable(options);
9714
9715 this._readableState = new ReadableState(options, this);
9716
9717 // legacy
9718 this.readable = true;
9719
9720 Stream.call(this);
9721 }
9722
9723 // Manually shove something into the read() buffer.
9724 // This returns true if the highWaterMark has not been hit yet,
9725 // similar to how Writable.write() returns true if you should
9726 // write() some more.
9727 Readable.prototype.push = function(chunk, encoding) {
9728 var state = this._readableState;
9729
9730 if (util.isString(chunk) && !state.objectMode) {
9731 encoding = encoding || state.defaultEncoding;
9732 if (encoding !== state.encoding) {
9733 chunk = new Buffer(chunk, encoding);
9734 encoding = '';
9735 }
9736 }
9737
9738 return readableAddChunk(this, state, chunk, encoding, false);
9739 };
9740
9741 // Unshift should *always* be something directly out of read()
9742 Readable.prototype.unshift = function(chunk) {
9743 var state = this._readableState;
9744 return readableAddChunk(this, state, chunk, '', true);
9745 };
9746
9747 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
9748 var er = chunkInvalid(state, chunk);
9749 if (er) {
9750 stream.emit('error', er);
9751 } else if (util.isNullOrUndefined(chunk)) {
9752 state.reading = false;
9753 if (!state.ended)
9754 onEofChunk(stream, state);
9755 } else if (state.objectMode || chunk && chunk.length > 0) {
9756 if (state.ended && !addToFront) {
9757 var e = new Error('stream.push() after EOF');
9758 stream.emit('error', e);
9759 } else if (state.endEmitted && addToFront) {
9760 var e = new Error('stream.unshift() after end event');
9761 stream.emit('error', e);
9762 } else {
9763 if (state.decoder && !addToFront && !encoding)
9764 chunk = state.decoder.write(chunk);
9765
9766 if (!addToFront)
9767 state.reading = false;
9768
9769 // if we want the data now, just emit it.
9770 if (state.flowing && state.length === 0 && !state.sync) {
9771 stream.emit('data', chunk);
9772 stream.read(0);
9773 } else {
9774 // update the buffer info.
9775 state.length += state.objectMode ? 1 : chunk.length;
9776 if (addToFront)
9777 state.buffer.unshift(chunk);
9778 else
9779 state.buffer.push(chunk);
9780
9781 if (state.needReadable)
9782 emitReadable(stream);
9783 }
9784
9785 maybeReadMore(stream, state);
9786 }
9787 } else if (!addToFront) {
9788 state.reading = false;
9789 }
9790
9791 return needMoreData(state);
9792 }
9793
9794
9795
9796 // if it's past the high water mark, we can push in some more.
9797 // Also, if we have no data yet, we can stand some
9798 // more bytes. This is to work around cases where hwm=0,
9799 // such as the repl. Also, if the push() triggered a
9800 // readable event, and the user called read(largeNumber) such that
9801 // needReadable was set, then we ought to push more, so that another
9802 // 'readable' event will be triggered.
9803 function needMoreData(state) {
9804 return !state.ended &&
9805 (state.needReadable ||
9806 state.length < state.highWaterMark ||
9807 state.length === 0);
9808 }
9809
9810 // backwards compatibility.
9811 Readable.prototype.setEncoding = function(enc) {
9812 if (!StringDecoder)
9813 StringDecoder = require('string_decoder/').StringDecoder;
9814 this._readableState.decoder = new StringDecoder(enc);
9815 this._readableState.encoding = enc;
9816 return this;
9817 };
9818
9819 // Don't raise the hwm > 128MB
9820 var MAX_HWM = 0x800000;
9821 function roundUpToNextPowerOf2(n) {
9822 if (n >= MAX_HWM) {
9823 n = MAX_HWM;
9824 } else {
9825 // Get the next highest power of 2
9826 n--;
9827 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
9828 n++;
9829 }
9830 return n;
9831 }
9832
9833 function howMuchToRead(n, state) {
9834 if (state.length === 0 && state.ended)
9835 return 0;
9836
9837 if (state.objectMode)
9838 return n === 0 ? 0 : 1;
9839
9840 if (isNaN(n) || util.isNull(n)) {
9841 // only flow one buffer at a time
9842 if (state.flowing && state.buffer.length)
9843 return state.buffer[0].length;
9844 else
9845 return state.length;
9846 }
9847
9848 if (n <= 0)
9849 return 0;
9850
9851 // If we're asking for more than the target buffer level,
9852 // then raise the water mark. Bump up to the next highest
9853 // power of 2, to prevent increasing it excessively in tiny
9854 // amounts.
9855 if (n > state.highWaterMark)
9856 state.highWaterMark = roundUpToNextPowerOf2(n);
9857
9858 // don't have that much. return null, unless we've ended.
9859 if (n > state.length) {
9860 if (!state.ended) {
9861 state.needReadable = true;
9862 return 0;
9863 } else
9864 return state.length;
9865 }
9866
9867 return n;
9868 }
9869
9870 // you can override either this method, or the async _read(n) below.
9871 Readable.prototype.read = function(n) {
9872 debug('read', n);
9873 var state = this._readableState;
9874 var nOrig = n;
9875
9876 if (!util.isNumber(n) || n > 0)
9877 state.emittedReadable = false;
9878
9879 // if we're doing read(0) to trigger a readable event, but we
9880 // already have a bunch of data in the buffer, then just trigger
9881 // the 'readable' event and move on.
9882 if (n === 0 &&
9883 state.needReadable &&
9884 (state.length >= state.highWaterMark || state.ended)) {
9885 debug('read: emitReadable', state.length, state.ended);
9886 if (state.length === 0 && state.ended)
9887 endReadable(this);
9888 else
9889 emitReadable(this);
9890 return null;
9891 }
9892
9893 n = howMuchToRead(n, state);
9894
9895 // if we've ended, and we're now clear, then finish it up.
9896 if (n === 0 && state.ended) {
9897 if (state.length === 0)
9898 endReadable(this);
9899 return null;
9900 }
9901
9902 // All the actual chunk generation logic needs to be
9903 // *below* the call to _read. The reason is that in certain
9904 // synthetic stream cases, such as passthrough streams, _read
9905 // may be a completely synchronous operation which may change
9906 // the state of the read buffer, providing enough data when
9907 // before there was *not* enough.
9908 //
9909 // So, the steps are:
9910 // 1. Figure out what the state of things will be after we do
9911 // a read from the buffer.
9912 //
9913 // 2. If that resulting state will trigger a _read, then call _read.
9914 // Note that this may be asynchronous, or synchronous. Yes, it is
9915 // deeply ugly to write APIs this way, but that still doesn't mean
9916 // that the Readable class should behave improperly, as streams are
9917 // designed to be sync/async agnostic.
9918 // Take note if the _read call is sync or async (ie, if the read call
9919 // has returned yet), so that we know whether or not it's safe to emit
9920 // 'readable' etc.
9921 //
9922 // 3. Actually pull the requested chunks out of the buffer and return.
9923
9924 // if we need a readable event, then we need to do some reading.
9925 var doRead = state.needReadable;
9926 debug('need readable', doRead);
9927
9928 // if we currently have less than the highWaterMark, then also read some
9929 if (state.length === 0 || state.length - n < state.highWaterMark) {
9930 doRead = true;
9931 debug('length less than watermark', doRead);
9932 }
9933
9934 // however, if we've ended, then there's no point, and if we're already
9935 // reading, then it's unnecessary.
9936 if (state.ended || state.reading) {
9937 doRead = false;
9938 debug('reading or ended', doRead);
9939 }
9940
9941 if (doRead) {
9942 debug('do read');
9943 state.reading = true;
9944 state.sync = true;
9945 // if the length is currently zero, then we *need* a readable event.
9946 if (state.length === 0)
9947 state.needReadable = true;
9948 // call internal read method
9949 this._read(state.highWaterMark);
9950 state.sync = false;
9951 }
9952
9953 // If _read pushed data synchronously, then `reading` will be false,
9954 // and we need to re-evaluate how much data we can return to the user.
9955 if (doRead && !state.reading)
9956 n = howMuchToRead(nOrig, state);
9957
9958 var ret;
9959 if (n > 0)
9960 ret = fromList(n, state);
9961 else
9962 ret = null;
9963
9964 if (util.isNull(ret)) {
9965 state.needReadable = true;
9966 n = 0;
9967 }
9968
9969 state.length -= n;
9970
9971 // If we have nothing in the buffer, then we want to know
9972 // as soon as we *do* get something into the buffer.
9973 if (state.length === 0 && !state.ended)
9974 state.needReadable = true;
9975
9976 // If we tried to read() past the EOF, then emit end on the next tick.
9977 if (nOrig !== n && state.ended && state.length === 0)
9978 endReadable(this);
9979
9980 if (!util.isNull(ret))
9981 this.emit('data', ret);
9982
9983 return ret;
9984 };
9985
9986 function chunkInvalid(state, chunk) {
9987 var er = null;
9988 if (!util.isBuffer(chunk) &&
9989 !util.isString(chunk) &&
9990 !util.isNullOrUndefined(chunk) &&
9991 !state.objectMode) {
9992 er = new TypeError('Invalid non-string/buffer chunk');
9993 }
9994 return er;
9995 }
9996
9997
9998 function onEofChunk(stream, state) {
9999 if (state.decoder && !state.ended) {
10000 var chunk = state.decoder.end();
10001 if (chunk && chunk.length) {
10002 state.buffer.push(chunk);
10003 state.length += state.objectMode ? 1 : chunk.length;
10004 }
10005 }
10006 state.ended = true;
10007
10008 // emit 'readable' now to make sure it gets picked up.
10009 emitReadable(stream);
10010 }
10011
10012 // Don't emit readable right away in sync mode, because this can trigger
10013 // another read() call => stack overflow. This way, it might trigger
10014 // a nextTick recursion warning, but that's not so bad.
10015 function emitReadable(stream) {
10016 var state = stream._readableState;
10017 state.needReadable = false;
10018 if (!state.emittedReadable) {
10019 debug('emitReadable', state.flowing);
10020 state.emittedReadable = true;
10021 if (state.sync)
10022 process.nextTick(function() {
10023 emitReadable_(stream);
10024 });
10025 else
10026 emitReadable_(stream);
10027 }
10028 }
10029
10030 function emitReadable_(stream) {
10031 debug('emit readable');
10032 stream.emit('readable');
10033 flow(stream);
10034 }
10035
10036
10037 // at this point, the user has presumably seen the 'readable' event,
10038 // and called read() to consume some data. that may have triggered
10039 // in turn another _read(n) call, in which case reading = true if
10040 // it's in progress.
10041 // However, if we're not ended, or reading, and the length < hwm,
10042 // then go ahead and try to read some more preemptively.
10043 function maybeReadMore(stream, state) {
10044 if (!state.readingMore) {
10045 state.readingMore = true;
10046 process.nextTick(function() {
10047 maybeReadMore_(stream, state);
10048 });
10049 }
10050 }
10051
10052 function maybeReadMore_(stream, state) {
10053 var len = state.length;
10054 while (!state.reading && !state.flowing && !state.ended &&
10055 state.length < state.highWaterMark) {
10056 debug('maybeReadMore read 0');
10057 stream.read(0);
10058 if (len === state.length)
10059 // didn't get any data, stop spinning.
10060 break;
10061 else
10062 len = state.length;
10063 }
10064 state.readingMore = false;
10065 }
10066
10067 // abstract method. to be overridden in specific implementation classes.
10068 // call cb(er, data) where data is <= n in length.
10069 // for virtual (non-string, non-buffer) streams, "length" is somewhat
10070 // arbitrary, and perhaps not very meaningful.
10071 Readable.prototype._read = function(n) {
10072 this.emit('error', new Error('not implemented'));
10073 };
10074
10075 Readable.prototype.pipe = function(dest, pipeOpts) {
10076 var src = this;
10077 var state = this._readableState;
10078
10079 switch (state.pipesCount) {
10080 case 0:
10081 state.pipes = dest;
10082 break;
10083 case 1:
10084 state.pipes = [state.pipes, dest];
10085 break;
10086 default:
10087 state.pipes.push(dest);
10088 break;
10089 }
10090 state.pipesCount += 1;
10091 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
10092
10093 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
10094 dest !== process.stdout &&
10095 dest !== process.stderr;
10096
10097 var endFn = doEnd ? onend : cleanup;
10098 if (state.endEmitted)
10099 process.nextTick(endFn);
10100 else
10101 src.once('end', endFn);
10102
10103 dest.on('unpipe', onunpipe);
10104 function onunpipe(readable) {
10105 debug('onunpipe');
10106 if (readable === src) {
10107 cleanup();
10108 }
10109 }
10110
10111 function onend() {
10112 debug('onend');
10113 dest.end();
10114 }
10115
10116 // when the dest drains, it reduces the awaitDrain counter
10117 // on the source. This would be more elegant with a .once()
10118 // handler in flow(), but adding and removing repeatedly is
10119 // too slow.
10120 var ondrain = pipeOnDrain(src);
10121 dest.on('drain', ondrain);
10122
10123 function cleanup() {
10124 debug('cleanup');
10125 // cleanup event handlers once the pipe is broken
10126 dest.removeListener('close', onclose);
10127 dest.removeListener('finish', onfinish);
10128 dest.removeListener('drain', ondrain);
10129 dest.removeListener('error', onerror);
10130 dest.removeListener('unpipe', onunpipe);
10131 src.removeListener('end', onend);
10132 src.removeListener('end', cleanup);
10133 src.removeListener('data', ondata);
10134
10135 // if the reader is waiting for a drain event from this
10136 // specific writer, then it would cause it to never start
10137 // flowing again.
10138 // So, if this is awaiting a drain, then we just call it now.
10139 // If we don't know, then assume that we are waiting for one.
10140 if (state.awaitDrain &&
10141 (!dest._writableState || dest._writableState.needDrain))
10142 ondrain();
10143 }
10144
10145 src.on('data', ondata);
10146 function ondata(chunk) {
10147 debug('ondata');
10148 var ret = dest.write(chunk);
10149 if (false === ret) {
10150 debug('false write response, pause',
10151 src._readableState.awaitDrain);
10152 src._readableState.awaitDrain++;
10153 src.pause();
10154 }
10155 }
10156
10157 // if the dest has an error, then stop piping into it.
10158 // however, don't suppress the throwing behavior for this.
10159 function onerror(er) {
10160 debug('onerror', er);
10161 unpipe();
10162 dest.removeListener('error', onerror);
10163 if (EE.listenerCount(dest, 'error') === 0)
10164 dest.emit('error', er);
10165 }
10166 // This is a brutally ugly hack to make sure that our error handler
10167 // is attached before any userland ones. NEVER DO THIS.
10168 if (!dest._events || !dest._events.error)
10169 dest.on('error', onerror);
10170 else if (isArray(dest._events.error))
10171 dest._events.error.unshift(onerror);
10172 else
10173 dest._events.error = [onerror, dest._events.error];
10174
10175
10176
10177 // Both close and finish should trigger unpipe, but only once.
10178 function onclose() {
10179 dest.removeListener('finish', onfinish);
10180 unpipe();
10181 }
10182 dest.once('close', onclose);
10183 function onfinish() {
10184 debug('onfinish');
10185 dest.removeListener('close', onclose);
10186 unpipe();
10187 }
10188 dest.once('finish', onfinish);
10189
10190 function unpipe() {
10191 debug('unpipe');
10192 src.unpipe(dest);
10193 }
10194
10195 // tell the dest that it's being piped to
10196 dest.emit('pipe', src);
10197
10198 // start the flow if it hasn't been started already.
10199 if (!state.flowing) {
10200 debug('pipe resume');
10201 src.resume();
10202 }
10203
10204 return dest;
10205 };
10206
10207 function pipeOnDrain(src) {
10208 return function() {
10209 var state = src._readableState;
10210 debug('pipeOnDrain', state.awaitDrain);
10211 if (state.awaitDrain)
10212 state.awaitDrain--;
10213 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
10214 state.flowing = true;
10215 flow(src);
10216 }
10217 };
10218 }
10219
10220
10221 Readable.prototype.unpipe = function(dest) {
10222 var state = this._readableState;
10223
10224 // if we're not piping anywhere, then do nothing.
10225 if (state.pipesCount === 0)
10226 return this;
10227
10228 // just one destination. most common case.
10229 if (state.pipesCount === 1) {
10230 // passed in one, but it's not the right one.
10231 if (dest && dest !== state.pipes)
10232 return this;
10233
10234 if (!dest)
10235 dest = state.pipes;
10236
10237 // got a match.
10238 state.pipes = null;
10239 state.pipesCount = 0;
10240 state.flowing = false;
10241 if (dest)
10242 dest.emit('unpipe', this);
10243 return this;
10244 }
10245
10246 // slow case. multiple pipe destinations.
10247
10248 if (!dest) {
10249 // remove all.
10250 var dests = state.pipes;
10251 var len = state.pipesCount;
10252 state.pipes = null;
10253 state.pipesCount = 0;
10254 state.flowing = false;
10255
10256 for (var i = 0; i < len; i++)
10257 dests[i].emit('unpipe', this);
10258 return this;
10259 }
10260
10261 // try to find the right one.
10262 var i = indexOf(state.pipes, dest);
10263 if (i === -1)
10264 return this;
10265
10266 state.pipes.splice(i, 1);
10267 state.pipesCount -= 1;
10268 if (state.pipesCount === 1)
10269 state.pipes = state.pipes[0];
10270
10271 dest.emit('unpipe', this);
10272
10273 return this;
10274 };
10275
10276 // set up data events if they are asked for
10277 // Ensure readable listeners eventually get something
10278 Readable.prototype.on = function(ev, fn) {
10279 var res = Stream.prototype.on.call(this, ev, fn);
10280
10281 // If listening to data, and it has not explicitly been paused,
10282 // then call resume to start the flow of data on the next tick.
10283 if (ev === 'data' && false !== this._readableState.flowing) {
10284 this.resume();
10285 }
10286
10287 if (ev === 'readable' && this.readable) {
10288 var state = this._readableState;
10289 if (!state.readableListening) {
10290 state.readableListening = true;
10291 state.emittedReadable = false;
10292 state.needReadable = true;
10293 if (!state.reading) {
10294 var self = this;
10295 process.nextTick(function() {
10296 debug('readable nexttick read 0');
10297 self.read(0);
10298 });
10299 } else if (state.length) {
10300 emitReadable(this, state);
10301 }
10302 }
10303 }
10304
10305 return res;
10306 };
10307 Readable.prototype.addListener = Readable.prototype.on;
10308
10309 // pause() and resume() are remnants of the legacy readable stream API
10310 // If the user uses them, then switch into old mode.
10311 Readable.prototype.resume = function() {
10312 var state = this._readableState;
10313 if (!state.flowing) {
10314 debug('resume');
10315 state.flowing = true;
10316 if (!state.reading) {
10317 debug('resume read 0');
10318 this.read(0);
10319 }
10320 resume(this, state);
10321 }
10322 return this;
10323 };
10324
10325 function resume(stream, state) {
10326 if (!state.resumeScheduled) {
10327 state.resumeScheduled = true;
10328 process.nextTick(function() {
10329 resume_(stream, state);
10330 });
10331 }
10332 }
10333
10334 function resume_(stream, state) {
10335 state.resumeScheduled = false;
10336 stream.emit('resume');
10337 flow(stream);
10338 if (state.flowing && !state.reading)
10339 stream.read(0);
10340 }
10341
10342 Readable.prototype.pause = function() {
10343 debug('call pause flowing=%j', this._readableState.flowing);
10344 if (false !== this._readableState.flowing) {
10345 debug('pause');
10346 this._readableState.flowing = false;
10347 this.emit('pause');
10348 }
10349 return this;
10350 };
10351
10352 function flow(stream) {
10353 var state = stream._readableState;
10354 debug('flow', state.flowing);
10355 if (state.flowing) {
10356 do {
10357 var chunk = stream.read();
10358 } while (null !== chunk && state.flowing);
10359 }
10360 }
10361
10362 // wrap an old-style stream as the async data source.
10363 // This is *not* part of the readable stream interface.
10364 // It is an ugly unfortunate mess of history.
10365 Readable.prototype.wrap = function(stream) {
10366 var state = this._readableState;
10367 var paused = false;
10368
10369 var self = this;
10370 stream.on('end', function() {
10371 debug('wrapped end');
10372 if (state.decoder && !state.ended) {
10373 var chunk = state.decoder.end();
10374 if (chunk && chunk.length)
10375 self.push(chunk);
10376 }
10377
10378 self.push(null);
10379 });
10380
10381 stream.on('data', function(chunk) {
10382 debug('wrapped data');
10383 if (state.decoder)
10384 chunk = state.decoder.write(chunk);
10385 if (!chunk || !state.objectMode && !chunk.length)
10386 return;
10387
10388 var ret = self.push(chunk);
10389 if (!ret) {
10390 paused = true;
10391 stream.pause();
10392 }
10393 });
10394
10395 // proxy all the other methods.
10396 // important when wrapping filters and duplexes.
10397 for (var i in stream) {
10398 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
10399 this[i] = function(method) { return function() {
10400 return stream[method].apply(stream, arguments);
10401 }}(i);
10402 }
10403 }
10404
10405 // proxy certain important events.
10406 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
10407 forEach(events, function(ev) {
10408 stream.on(ev, self.emit.bind(self, ev));
10409 });
10410
10411 // when we try to consume some more bytes, simply unpause the
10412 // underlying stream.
10413 self._read = function(n) {
10414 debug('wrapped _read', n);
10415 if (paused) {
10416 paused = false;
10417 stream.resume();
10418 }
10419 };
10420
10421 return self;
10422 };
10423
10424
10425
10426 // exposed for testing purposes only.
10427 Readable._fromList = fromList;
10428
10429 // Pluck off n bytes from an array of buffers.
10430 // Length is the combined lengths of all the buffers in the list.
10431 function fromList(n, state) {
10432 var list = state.buffer;
10433 var length = state.length;
10434 var stringMode = !!state.decoder;
10435 var objectMode = !!state.objectMode;
10436 var ret;
10437
10438 // nothing in the list, definitely empty.
10439 if (list.length === 0)
10440 return null;
10441
10442 if (length === 0)
10443 ret = null;
10444 else if (objectMode)
10445 ret = list.shift();
10446 else if (!n || n >= length) {
10447 // read it all, truncate the array.
10448 if (stringMode)
10449 ret = list.join('');
10450 else
10451 ret = Buffer.concat(list, length);
10452 list.length = 0;
10453 } else {
10454 // read just some of it.
10455 if (n < list[0].length) {
10456 // just take a part of the first list item.
10457 // slice is the same for buffers and strings.
10458 var buf = list[0];
10459 ret = buf.slice(0, n);
10460 list[0] = buf.slice(n);
10461 } else if (n === list[0].length) {
10462 // first list is a perfect match
10463 ret = list.shift();
10464 } else {
10465 // complex case.
10466 // we have enough to cover it, but it spans past the first buffer.
10467 if (stringMode)
10468 ret = '';
10469 else
10470 ret = new Buffer(n);
10471
10472 var c = 0;
10473 for (var i = 0, l = list.length; i < l && c < n; i++) {
10474 var buf = list[0];
10475 var cpy = Math.min(n - c, buf.length);
10476
10477 if (stringMode)
10478 ret += buf.slice(0, cpy);
10479 else
10480 buf.copy(ret, c, 0, cpy);
10481
10482 if (cpy < buf.length)
10483 list[0] = buf.slice(cpy);
10484 else
10485 list.shift();
10486
10487 c += cpy;
10488 }
10489 }
10490 }
10491
10492 return ret;
10493 }
10494
10495 function endReadable(stream) {
10496 var state = stream._readableState;
10497
10498 // If we get here before consuming all the bytes, then that is a
10499 // bug in node. Should never happen.
10500 if (state.length > 0)
10501 throw new Error('endReadable called on non-empty stream');
10502
10503 if (!state.endEmitted) {
10504 state.ended = true;
10505 process.nextTick(function() {
10506 // Check that we didn't get one last unshift.
10507 if (!state.endEmitted && state.length === 0) {
10508 state.endEmitted = true;
10509 stream.readable = false;
10510 stream.emit('end');
10511 }
10512 });
10513 }
10514 }
10515
10516 function forEach (xs, f) {
10517 for (var i = 0, l = xs.length; i < l; i++) {
10518 f(xs[i], i);
10519 }
10520 }
10521
10522 function indexOf (xs, x) {
10523 for (var i = 0, l = xs.length; i < l; i++) {
10524 if (xs[i] === x) return i;
10525 }
10526 return -1;
10527 }
10528
10529 }).call(this,require('_process'))
10530 },{"./_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){
10531 // Copyright Joyent, Inc. and other Node contributors.
10532 //
10533 // Permission is hereby granted, free of charge, to any person obtaining a
10534 // copy of this software and associated documentation files (the
10535 // "Software"), to deal in the Software without restriction, including
10536 // without limitation the rights to use, copy, modify, merge, publish,
10537 // distribute, sublicense, and/or sell copies of the Software, and to permit
10538 // persons to whom the Software is furnished to do so, subject to the
10539 // following conditions:
10540 //
10541 // The above copyright notice and this permission notice shall be included
10542 // in all copies or substantial portions of the Software.
10543 //
10544 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10545 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10546 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10547 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10548 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10549 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10550 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10551
10552
10553 // a transform stream is a readable/writable stream where you do
10554 // something with the data. Sometimes it's called a "filter",
10555 // but that's not a great name for it, since that implies a thing where
10556 // some bits pass through, and others are simply ignored. (That would
10557 // be a valid example of a transform, of course.)
10558 //
10559 // While the output is causally related to the input, it's not a
10560 // necessarily symmetric or synchronous transformation. For example,
10561 // a zlib stream might take multiple plain-text writes(), and then
10562 // emit a single compressed chunk some time in the future.
10563 //
10564 // Here's how this works:
10565 //
10566 // The Transform stream has all the aspects of the readable and writable
10567 // stream classes. When you write(chunk), that calls _write(chunk,cb)
10568 // internally, and returns false if there's a lot of pending writes
10569 // buffered up. When you call read(), that calls _read(n) until
10570 // there's enough pending readable data buffered up.
10571 //
10572 // In a transform stream, the written data is placed in a buffer. When
10573 // _read(n) is called, it transforms the queued up data, calling the
10574 // buffered _write cb's as it consumes chunks. If consuming a single
10575 // written chunk would result in multiple output chunks, then the first
10576 // outputted bit calls the readcb, and subsequent chunks just go into
10577 // the read buffer, and will cause it to emit 'readable' if necessary.
10578 //
10579 // This way, back-pressure is actually determined by the reading side,
10580 // since _read has to be called to start processing a new chunk. However,
10581 // a pathological inflate type of transform can cause excessive buffering
10582 // here. For example, imagine a stream where every byte of input is
10583 // interpreted as an integer from 0-255, and then results in that many
10584 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
10585 // 1kb of data being output. In this case, you could write a very small
10586 // amount of input, and end up with a very large amount of output. In
10587 // such a pathological inflating mechanism, there'd be no way to tell
10588 // the system to stop doing the transform. A single 4MB write could
10589 // cause the system to run out of memory.
10590 //
10591 // However, even in such a pathological case, only a single written chunk
10592 // would be consumed, and then the rest would wait (un-transformed) until
10593 // the results of the previous transformed chunk were consumed.
10594
10595 module.exports = Transform;
10596
10597 var Duplex = require('./_stream_duplex');
10598
10599 /*<replacement>*/
10600 var util = require('core-util-is');
10601 util.inherits = require('inherits');
10602 /*</replacement>*/
10603
10604 util.inherits(Transform, Duplex);
10605
10606
10607 function TransformState(options, stream) {
10608 this.afterTransform = function(er, data) {
10609 return afterTransform(stream, er, data);
10610 };
10611
10612 this.needTransform = false;
10613 this.transforming = false;
10614 this.writecb = null;
10615 this.writechunk = null;
10616 }
10617
10618 function afterTransform(stream, er, data) {
10619 var ts = stream._transformState;
10620 ts.transforming = false;
10621
10622 var cb = ts.writecb;
10623
10624 if (!cb)
10625 return stream.emit('error', new Error('no writecb in Transform class'));
10626
10627 ts.writechunk = null;
10628 ts.writecb = null;
10629
10630 if (!util.isNullOrUndefined(data))
10631 stream.push(data);
10632
10633 if (cb)
10634 cb(er);
10635
10636 var rs = stream._readableState;
10637 rs.reading = false;
10638 if (rs.needReadable || rs.length < rs.highWaterMark) {
10639 stream._read(rs.highWaterMark);
10640 }
10641 }
10642
10643
10644 function Transform(options) {
10645 if (!(this instanceof Transform))
10646 return new Transform(options);
10647
10648 Duplex.call(this, options);
10649
10650 this._transformState = new TransformState(options, this);
10651
10652 // when the writable side finishes, then flush out anything remaining.
10653 var stream = this;
10654
10655 // start out asking for a readable event once data is transformed.
10656 this._readableState.needReadable = true;
10657
10658 // we have implemented the _read method, and done the other things
10659 // that Readable wants before the first _read call, so unset the
10660 // sync guard flag.
10661 this._readableState.sync = false;
10662
10663 this.once('prefinish', function() {
10664 if (util.isFunction(this._flush))
10665 this._flush(function(er) {
10666 done(stream, er);
10667 });
10668 else
10669 done(stream);
10670 });
10671 }
10672
10673 Transform.prototype.push = function(chunk, encoding) {
10674 this._transformState.needTransform = false;
10675 return Duplex.prototype.push.call(this, chunk, encoding);
10676 };
10677
10678 // This is the part where you do stuff!
10679 // override this function in implementation classes.
10680 // 'chunk' is an input chunk.
10681 //
10682 // Call `push(newChunk)` to pass along transformed output
10683 // to the readable side. You may call 'push' zero or more times.
10684 //
10685 // Call `cb(err)` when you are done with this chunk. If you pass
10686 // an error, then that'll put the hurt on the whole operation. If you
10687 // never call cb(), then you'll never get another chunk.
10688 Transform.prototype._transform = function(chunk, encoding, cb) {
10689 throw new Error('not implemented');
10690 };
10691
10692 Transform.prototype._write = function(chunk, encoding, cb) {
10693 var ts = this._transformState;
10694 ts.writecb = cb;
10695 ts.writechunk = chunk;
10696 ts.writeencoding = encoding;
10697 if (!ts.transforming) {
10698 var rs = this._readableState;
10699 if (ts.needTransform ||
10700 rs.needReadable ||
10701 rs.length < rs.highWaterMark)
10702 this._read(rs.highWaterMark);
10703 }
10704 };
10705
10706 // Doesn't matter what the args are here.
10707 // _transform does all the work.
10708 // That we got here means that the readable side wants more data.
10709 Transform.prototype._read = function(n) {
10710 var ts = this._transformState;
10711
10712 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
10713 ts.transforming = true;
10714 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
10715 } else {
10716 // mark that we need a transform, so that any data that comes in
10717 // will get processed, now that we've asked for it.
10718 ts.needTransform = true;
10719 }
10720 };
10721
10722
10723 function done(stream, er) {
10724 if (er)
10725 return stream.emit('error', er);
10726
10727 // if there's nothing in the write buffer, then that means
10728 // that nothing more will ever be provided
10729 var ws = stream._writableState;
10730 var ts = stream._transformState;
10731
10732 if (ws.length)
10733 throw new Error('calling transform done when ws.length != 0');
10734
10735 if (ts.transforming)
10736 throw new Error('calling transform done when still transforming');
10737
10738 return stream.push(null);
10739 }
10740
10741 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
10742 (function (process){
10743 // Copyright Joyent, Inc. and other Node contributors.
10744 //
10745 // Permission is hereby granted, free of charge, to any person obtaining a
10746 // copy of this software and associated documentation files (the
10747 // "Software"), to deal in the Software without restriction, including
10748 // without limitation the rights to use, copy, modify, merge, publish,
10749 // distribute, sublicense, and/or sell copies of the Software, and to permit
10750 // persons to whom the Software is furnished to do so, subject to the
10751 // following conditions:
10752 //
10753 // The above copyright notice and this permission notice shall be included
10754 // in all copies or substantial portions of the Software.
10755 //
10756 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10757 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10758 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10759 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10760 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10761 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10762 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10763
10764 // A bit simpler than readable streams.
10765 // Implement an async ._write(chunk, cb), and it'll handle all
10766 // the drain event emission and buffering.
10767
10768 module.exports = Writable;
10769
10770 /*<replacement>*/
10771 var Buffer = require('buffer').Buffer;
10772 /*</replacement>*/
10773
10774 Writable.WritableState = WritableState;
10775
10776
10777 /*<replacement>*/
10778 var util = require('core-util-is');
10779 util.inherits = require('inherits');
10780 /*</replacement>*/
10781
10782 var Stream = require('stream');
10783
10784 util.inherits(Writable, Stream);
10785
10786 function WriteReq(chunk, encoding, cb) {
10787 this.chunk = chunk;
10788 this.encoding = encoding;
10789 this.callback = cb;
10790 }
10791
10792 function WritableState(options, stream) {
10793 var Duplex = require('./_stream_duplex');
10794
10795 options = options || {};
10796
10797 // the point at which write() starts returning false
10798 // Note: 0 is a valid value, means that we always return false if
10799 // the entire buffer is not flushed immediately on write()
10800 var hwm = options.highWaterMark;
10801 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
10802 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
10803
10804 // object stream flag to indicate whether or not this stream
10805 // contains buffers or objects.
10806 this.objectMode = !!options.objectMode;
10807
10808 if (stream instanceof Duplex)
10809 this.objectMode = this.objectMode || !!options.writableObjectMode;
10810
10811 // cast to ints.
10812 this.highWaterMark = ~~this.highWaterMark;
10813
10814 this.needDrain = false;
10815 // at the start of calling end()
10816 this.ending = false;
10817 // when end() has been called, and returned
10818 this.ended = false;
10819 // when 'finish' is emitted
10820 this.finished = false;
10821
10822 // should we decode strings into buffers before passing to _write?
10823 // this is here so that some node-core streams can optimize string
10824 // handling at a lower level.
10825 var noDecode = options.decodeStrings === false;
10826 this.decodeStrings = !noDecode;
10827
10828 // Crypto is kind of old and crusty. Historically, its default string
10829 // encoding is 'binary' so we have to make this configurable.
10830 // Everything else in the universe uses 'utf8', though.
10831 this.defaultEncoding = options.defaultEncoding || 'utf8';
10832
10833 // not an actual buffer we keep track of, but a measurement
10834 // of how much we're waiting to get pushed to some underlying
10835 // socket or file.
10836 this.length = 0;
10837
10838 // a flag to see when we're in the middle of a write.
10839 this.writing = false;
10840
10841 // when true all writes will be buffered until .uncork() call
10842 this.corked = 0;
10843
10844 // a flag to be able to tell if the onwrite cb is called immediately,
10845 // or on a later tick. We set this to true at first, because any
10846 // actions that shouldn't happen until "later" should generally also
10847 // not happen before the first write call.
10848 this.sync = true;
10849
10850 // a flag to know if we're processing previously buffered items, which
10851 // may call the _write() callback in the same tick, so that we don't
10852 // end up in an overlapped onwrite situation.
10853 this.bufferProcessing = false;
10854
10855 // the callback that's passed to _write(chunk,cb)
10856 this.onwrite = function(er) {
10857 onwrite(stream, er);
10858 };
10859
10860 // the callback that the user supplies to write(chunk,encoding,cb)
10861 this.writecb = null;
10862
10863 // the amount that is being written when _write is called.
10864 this.writelen = 0;
10865
10866 this.buffer = [];
10867
10868 // number of pending user-supplied write callbacks
10869 // this must be 0 before 'finish' can be emitted
10870 this.pendingcb = 0;
10871
10872 // emit prefinish if the only thing we're waiting for is _write cbs
10873 // This is relevant for synchronous Transform streams
10874 this.prefinished = false;
10875
10876 // True if the error was already emitted and should not be thrown again
10877 this.errorEmitted = false;
10878 }
10879
10880 function Writable(options) {
10881 var Duplex = require('./_stream_duplex');
10882
10883 // Writable ctor is applied to Duplexes, though they're not
10884 // instanceof Writable, they're instanceof Readable.
10885 if (!(this instanceof Writable) && !(this instanceof Duplex))
10886 return new Writable(options);
10887
10888 this._writableState = new WritableState(options, this);
10889
10890 // legacy.
10891 this.writable = true;
10892
10893 Stream.call(this);
10894 }
10895
10896 // Otherwise people can pipe Writable streams, which is just wrong.
10897 Writable.prototype.pipe = function() {
10898 this.emit('error', new Error('Cannot pipe. Not readable.'));
10899 };
10900
10901
10902 function writeAfterEnd(stream, state, cb) {
10903 var er = new Error('write after end');
10904 // TODO: defer error events consistently everywhere, not just the cb
10905 stream.emit('error', er);
10906 process.nextTick(function() {
10907 cb(er);
10908 });
10909 }
10910
10911 // If we get something that is not a buffer, string, null, or undefined,
10912 // and we're not in objectMode, then that's an error.
10913 // Otherwise stream chunks are all considered to be of length=1, and the
10914 // watermarks determine how many objects to keep in the buffer, rather than
10915 // how many bytes or characters.
10916 function validChunk(stream, state, chunk, cb) {
10917 var valid = true;
10918 if (!util.isBuffer(chunk) &&
10919 !util.isString(chunk) &&
10920 !util.isNullOrUndefined(chunk) &&
10921 !state.objectMode) {
10922 var er = new TypeError('Invalid non-string/buffer chunk');
10923 stream.emit('error', er);
10924 process.nextTick(function() {
10925 cb(er);
10926 });
10927 valid = false;
10928 }
10929 return valid;
10930 }
10931
10932 Writable.prototype.write = function(chunk, encoding, cb) {
10933 var state = this._writableState;
10934 var ret = false;
10935
10936 if (util.isFunction(encoding)) {
10937 cb = encoding;
10938 encoding = null;
10939 }
10940
10941 if (util.isBuffer(chunk))
10942 encoding = 'buffer';
10943 else if (!encoding)
10944 encoding = state.defaultEncoding;
10945
10946 if (!util.isFunction(cb))
10947 cb = function() {};
10948
10949 if (state.ended)
10950 writeAfterEnd(this, state, cb);
10951 else if (validChunk(this, state, chunk, cb)) {
10952 state.pendingcb++;
10953 ret = writeOrBuffer(this, state, chunk, encoding, cb);
10954 }
10955
10956 return ret;
10957 };
10958
10959 Writable.prototype.cork = function() {
10960 var state = this._writableState;
10961
10962 state.corked++;
10963 };
10964
10965 Writable.prototype.uncork = function() {
10966 var state = this._writableState;
10967
10968 if (state.corked) {
10969 state.corked--;
10970
10971 if (!state.writing &&
10972 !state.corked &&
10973 !state.finished &&
10974 !state.bufferProcessing &&
10975 state.buffer.length)
10976 clearBuffer(this, state);
10977 }
10978 };
10979
10980 function decodeChunk(state, chunk, encoding) {
10981 if (!state.objectMode &&
10982 state.decodeStrings !== false &&
10983 util.isString(chunk)) {
10984 chunk = new Buffer(chunk, encoding);
10985 }
10986 return chunk;
10987 }
10988
10989 // if we're already writing something, then just put this
10990 // in the queue, and wait our turn. Otherwise, call _write
10991 // If we return false, then we need a drain event, so set that flag.
10992 function writeOrBuffer(stream, state, chunk, encoding, cb) {
10993 chunk = decodeChunk(state, chunk, encoding);
10994 if (util.isBuffer(chunk))
10995 encoding = 'buffer';
10996 var len = state.objectMode ? 1 : chunk.length;
10997
10998 state.length += len;
10999
11000 var ret = state.length < state.highWaterMark;
11001 // we must ensure that previous needDrain will not be reset to false.
11002 if (!ret)
11003 state.needDrain = true;
11004
11005 if (state.writing || state.corked)
11006 state.buffer.push(new WriteReq(chunk, encoding, cb));
11007 else
11008 doWrite(stream, state, false, len, chunk, encoding, cb);
11009
11010 return ret;
11011 }
11012
11013 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
11014 state.writelen = len;
11015 state.writecb = cb;
11016 state.writing = true;
11017 state.sync = true;
11018 if (writev)
11019 stream._writev(chunk, state.onwrite);
11020 else
11021 stream._write(chunk, encoding, state.onwrite);
11022 state.sync = false;
11023 }
11024
11025 function onwriteError(stream, state, sync, er, cb) {
11026 if (sync)
11027 process.nextTick(function() {
11028 state.pendingcb--;
11029 cb(er);
11030 });
11031 else {
11032 state.pendingcb--;
11033 cb(er);
11034 }
11035
11036 stream._writableState.errorEmitted = true;
11037 stream.emit('error', er);
11038 }
11039
11040 function onwriteStateUpdate(state) {
11041 state.writing = false;
11042 state.writecb = null;
11043 state.length -= state.writelen;
11044 state.writelen = 0;
11045 }
11046
11047 function onwrite(stream, er) {
11048 var state = stream._writableState;
11049 var sync = state.sync;
11050 var cb = state.writecb;
11051
11052 onwriteStateUpdate(state);
11053
11054 if (er)
11055 onwriteError(stream, state, sync, er, cb);
11056 else {
11057 // Check if we're actually ready to finish, but don't emit yet
11058 var finished = needFinish(stream, state);
11059
11060 if (!finished &&
11061 !state.corked &&
11062 !state.bufferProcessing &&
11063 state.buffer.length) {
11064 clearBuffer(stream, state);
11065 }
11066
11067 if (sync) {
11068 process.nextTick(function() {
11069 afterWrite(stream, state, finished, cb);
11070 });
11071 } else {
11072 afterWrite(stream, state, finished, cb);
11073 }
11074 }
11075 }
11076
11077 function afterWrite(stream, state, finished, cb) {
11078 if (!finished)
11079 onwriteDrain(stream, state);
11080 state.pendingcb--;
11081 cb();
11082 finishMaybe(stream, state);
11083 }
11084
11085 // Must force callback to be called on nextTick, so that we don't
11086 // emit 'drain' before the write() consumer gets the 'false' return
11087 // value, and has a chance to attach a 'drain' listener.
11088 function onwriteDrain(stream, state) {
11089 if (state.length === 0 && state.needDrain) {
11090 state.needDrain = false;
11091 stream.emit('drain');
11092 }
11093 }
11094
11095
11096 // if there's something in the buffer waiting, then process it
11097 function clearBuffer(stream, state) {
11098 state.bufferProcessing = true;
11099
11100 if (stream._writev && state.buffer.length > 1) {
11101 // Fast case, write everything using _writev()
11102 var cbs = [];
11103 for (var c = 0; c < state.buffer.length; c++)
11104 cbs.push(state.buffer[c].callback);
11105
11106 // count the one we are adding, as well.
11107 // TODO(isaacs) clean this up
11108 state.pendingcb++;
11109 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
11110 for (var i = 0; i < cbs.length; i++) {
11111 state.pendingcb--;
11112 cbs[i](err);
11113 }
11114 });
11115
11116 // Clear buffer
11117 state.buffer = [];
11118 } else {
11119 // Slow case, write chunks one-by-one
11120 for (var c = 0; c < state.buffer.length; c++) {
11121 var entry = state.buffer[c];
11122 var chunk = entry.chunk;
11123 var encoding = entry.encoding;
11124 var cb = entry.callback;
11125 var len = state.objectMode ? 1 : chunk.length;
11126
11127 doWrite(stream, state, false, len, chunk, encoding, cb);
11128
11129 // if we didn't call the onwrite immediately, then
11130 // it means that we need to wait until it does.
11131 // also, that means that the chunk and cb are currently
11132 // being processed, so move the buffer counter past them.
11133 if (state.writing) {
11134 c++;
11135 break;
11136 }
11137 }
11138
11139 if (c < state.buffer.length)
11140 state.buffer = state.buffer.slice(c);
11141 else
11142 state.buffer.length = 0;
11143 }
11144
11145 state.bufferProcessing = false;
11146 }
11147
11148 Writable.prototype._write = function(chunk, encoding, cb) {
11149 cb(new Error('not implemented'));
11150
11151 };
11152
11153 Writable.prototype._writev = null;
11154
11155 Writable.prototype.end = function(chunk, encoding, cb) {
11156 var state = this._writableState;
11157
11158 if (util.isFunction(chunk)) {
11159 cb = chunk;
11160 chunk = null;
11161 encoding = null;
11162 } else if (util.isFunction(encoding)) {
11163 cb = encoding;
11164 encoding = null;
11165 }
11166
11167 if (!util.isNullOrUndefined(chunk))
11168 this.write(chunk, encoding);
11169
11170 // .end() fully uncorks
11171 if (state.corked) {
11172 state.corked = 1;
11173 this.uncork();
11174 }
11175
11176 // ignore unnecessary end() calls.
11177 if (!state.ending && !state.finished)
11178 endWritable(this, state, cb);
11179 };
11180
11181
11182 function needFinish(stream, state) {
11183 return (state.ending &&
11184 state.length === 0 &&
11185 !state.finished &&
11186 !state.writing);
11187 }
11188
11189 function prefinish(stream, state) {
11190 if (!state.prefinished) {
11191 state.prefinished = true;
11192 stream.emit('prefinish');
11193 }
11194 }
11195
11196 function finishMaybe(stream, state) {
11197 var need = needFinish(stream, state);
11198 if (need) {
11199 if (state.pendingcb === 0) {
11200 prefinish(stream, state);
11201 state.finished = true;
11202 stream.emit('finish');
11203 } else
11204 prefinish(stream, state);
11205 }
11206 return need;
11207 }
11208
11209 function endWritable(stream, state, cb) {
11210 state.ending = true;
11211 finishMaybe(stream, state);
11212 if (cb) {
11213 if (state.finished)
11214 process.nextTick(cb);
11215 else
11216 stream.once('finish', cb);
11217 }
11218 state.ended = true;
11219 }
11220
11221 }).call(this,require('_process'))
11222 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
11223 (function (Buffer){
11224 // Copyright Joyent, Inc. and other Node contributors.
11225 //
11226 // Permission is hereby granted, free of charge, to any person obtaining a
11227 // copy of this software and associated documentation files (the
11228 // "Software"), to deal in the Software without restriction, including
11229 // without limitation the rights to use, copy, modify, merge, publish,
11230 // distribute, sublicense, and/or sell copies of the Software, and to permit
11231 // persons to whom the Software is furnished to do so, subject to the
11232 // following conditions:
11233 //
11234 // The above copyright notice and this permission notice shall be included
11235 // in all copies or substantial portions of the Software.
11236 //
11237 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11238 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11239 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11240 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11241 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11242 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11243 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11244
11245 // NOTE: These type checking functions intentionally don't use `instanceof`
11246 // because it is fragile and can be easily faked with `Object.create()`.
11247 function isArray(ar) {
11248 return Array.isArray(ar);
11249 }
11250 exports.isArray = isArray;
11251
11252 function isBoolean(arg) {
11253 return typeof arg === 'boolean';
11254 }
11255 exports.isBoolean = isBoolean;
11256
11257 function isNull(arg) {
11258 return arg === null;
11259 }
11260 exports.isNull = isNull;
11261
11262 function isNullOrUndefined(arg) {
11263 return arg == null;
11264 }
11265 exports.isNullOrUndefined = isNullOrUndefined;
11266
11267 function isNumber(arg) {
11268 return typeof arg === 'number';
11269 }
11270 exports.isNumber = isNumber;
11271
11272 function isString(arg) {
11273 return typeof arg === 'string';
11274 }
11275 exports.isString = isString;
11276
11277 function isSymbol(arg) {
11278 return typeof arg === 'symbol';
11279 }
11280 exports.isSymbol = isSymbol;
11281
11282 function isUndefined(arg) {
11283 return arg === void 0;
11284 }
11285 exports.isUndefined = isUndefined;
11286
11287 function isRegExp(re) {
11288 return isObject(re) && objectToString(re) === '[object RegExp]';
11289 }
11290 exports.isRegExp = isRegExp;
11291
11292 function isObject(arg) {
11293 return typeof arg === 'object' && arg !== null;
11294 }
11295 exports.isObject = isObject;
11296
11297 function isDate(d) {
11298 return isObject(d) && objectToString(d) === '[object Date]';
11299 }
11300 exports.isDate = isDate;
11301
11302 function isError(e) {
11303 return isObject(e) &&
11304 (objectToString(e) === '[object Error]' || e instanceof Error);
11305 }
11306 exports.isError = isError;
11307
11308 function isFunction(arg) {
11309 return typeof arg === 'function';
11310 }
11311 exports.isFunction = isFunction;
11312
11313 function isPrimitive(arg) {
11314 return arg === null ||
11315 typeof arg === 'boolean' ||
11316 typeof arg === 'number' ||
11317 typeof arg === 'string' ||
11318 typeof arg === 'symbol' || // ES6 symbol
11319 typeof arg === 'undefined';
11320 }
11321 exports.isPrimitive = isPrimitive;
11322
11323 function isBuffer(arg) {
11324 return Buffer.isBuffer(arg);
11325 }
11326 exports.isBuffer = isBuffer;
11327
11328 function objectToString(o) {
11329 return Object.prototype.toString.call(o);
11330 }
11331 }).call(this,require("buffer").Buffer)
11332 },{"buffer":7}],22:[function(require,module,exports){
11333 module.exports = require("./lib/_stream_passthrough.js")
11334
11335 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
11336 exports = module.exports = require('./lib/_stream_readable.js');
11337 exports.Stream = require('stream');
11338 exports.Readable = exports;
11339 exports.Writable = require('./lib/_stream_writable.js');
11340 exports.Duplex = require('./lib/_stream_duplex.js');
11341 exports.Transform = require('./lib/_stream_transform.js');
11342 exports.PassThrough = require('./lib/_stream_passthrough.js');
11343
11344 },{"./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){
11345 module.exports = require("./lib/_stream_transform.js")
11346
11347 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
11348 module.exports = require("./lib/_stream_writable.js")
11349
11350 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
11351 // Copyright Joyent, Inc. and other Node contributors.
11352 //
11353 // Permission is hereby granted, free of charge, to any person obtaining a
11354 // copy of this software and associated documentation files (the
11355 // "Software"), to deal in the Software without restriction, including
11356 // without limitation the rights to use, copy, modify, merge, publish,
11357 // distribute, sublicense, and/or sell copies of the Software, and to permit
11358 // persons to whom the Software is furnished to do so, subject to the
11359 // following conditions:
11360 //
11361 // The above copyright notice and this permission notice shall be included
11362 // in all copies or substantial portions of the Software.
11363 //
11364 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11365 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11366 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11367 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11368 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11369 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11370 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11371
11372 module.exports = Stream;
11373
11374 var EE = require('events').EventEmitter;
11375 var inherits = require('inherits');
11376
11377 inherits(Stream, EE);
11378 Stream.Readable = require('readable-stream/readable.js');
11379 Stream.Writable = require('readable-stream/writable.js');
11380 Stream.Duplex = require('readable-stream/duplex.js');
11381 Stream.Transform = require('readable-stream/transform.js');
11382 Stream.PassThrough = require('readable-stream/passthrough.js');
11383
11384 // Backwards-compat with node 0.4.x
11385 Stream.Stream = Stream;
11386
11387
11388
11389 // old-style streams. Note that the pipe method (the only relevant
11390 // part of this class) is overridden in the Readable class.
11391
11392 function Stream() {
11393 EE.call(this);
11394 }
11395
11396 Stream.prototype.pipe = function(dest, options) {
11397 var source = this;
11398
11399 function ondata(chunk) {
11400 if (dest.writable) {
11401 if (false === dest.write(chunk) && source.pause) {
11402 source.pause();
11403 }
11404 }
11405 }
11406
11407 source.on('data', ondata);
11408
11409 function ondrain() {
11410 if (source.readable && source.resume) {
11411 source.resume();
11412 }
11413 }
11414
11415 dest.on('drain', ondrain);
11416
11417 // If the 'end' option is not supplied, dest.end() will be called when
11418 // source gets the 'end' or 'close' events. Only dest.end() once.
11419 if (!dest._isStdio && (!options || options.end !== false)) {
11420 source.on('end', onend);
11421 source.on('close', onclose);
11422 }
11423
11424 var didOnEnd = false;
11425 function onend() {
11426 if (didOnEnd) return;
11427 didOnEnd = true;
11428
11429 dest.end();
11430 }
11431
11432
11433 function onclose() {
11434 if (didOnEnd) return;
11435 didOnEnd = true;
11436
11437 if (typeof dest.destroy === 'function') dest.destroy();
11438 }
11439
11440 // don't leave dangling pipes when there are errors.
11441 function onerror(er) {
11442 cleanup();
11443 if (EE.listenerCount(this, 'error') === 0) {
11444 throw er; // Unhandled stream error in pipe.
11445 }
11446 }
11447
11448 source.on('error', onerror);
11449 dest.on('error', onerror);
11450
11451 // remove all the event listeners that were added.
11452 function cleanup() {
11453 source.removeListener('data', ondata);
11454 dest.removeListener('drain', ondrain);
11455
11456 source.removeListener('end', onend);
11457 source.removeListener('close', onclose);
11458
11459 source.removeListener('error', onerror);
11460 dest.removeListener('error', onerror);
11461
11462 source.removeListener('end', cleanup);
11463 source.removeListener('close', cleanup);
11464
11465 dest.removeListener('close', cleanup);
11466 }
11467
11468 source.on('end', cleanup);
11469 source.on('close', cleanup);
11470
11471 dest.on('close', cleanup);
11472
11473 dest.emit('pipe', source);
11474
11475 // Allow for unix-like usage: A.pipe(B).pipe(C)
11476 return dest;
11477 };
11478
11479 },{"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){
11480 // Copyright Joyent, Inc. and other Node contributors.
11481 //
11482 // Permission is hereby granted, free of charge, to any person obtaining a
11483 // copy of this software and associated documentation files (the
11484 // "Software"), to deal in the Software without restriction, including
11485 // without limitation the rights to use, copy, modify, merge, publish,
11486 // distribute, sublicense, and/or sell copies of the Software, and to permit
11487 // persons to whom the Software is furnished to do so, subject to the
11488 // following conditions:
11489 //
11490 // The above copyright notice and this permission notice shall be included
11491 // in all copies or substantial portions of the Software.
11492 //
11493 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11494 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11495 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11496 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11497 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11498 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11499 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11500
11501 var Buffer = require('buffer').Buffer;
11502
11503 var isBufferEncoding = Buffer.isEncoding
11504 || function(encoding) {
11505 switch (encoding && encoding.toLowerCase()) {
11506 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;
11507 default: return false;
11508 }
11509 }
11510
11511
11512 function assertEncoding(encoding) {
11513 if (encoding && !isBufferEncoding(encoding)) {
11514 throw new Error('Unknown encoding: ' + encoding);
11515 }
11516 }
11517
11518 // StringDecoder provides an interface for efficiently splitting a series of
11519 // buffers into a series of JS strings without breaking apart multi-byte
11520 // characters. CESU-8 is handled as part of the UTF-8 encoding.
11521 //
11522 // @TODO Handling all encodings inside a single object makes it very difficult
11523 // to reason about this code, so it should be split up in the future.
11524 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
11525 // points as used by CESU-8.
11526 var StringDecoder = exports.StringDecoder = function(encoding) {
11527 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
11528 assertEncoding(encoding);
11529 switch (this.encoding) {
11530 case 'utf8':
11531 // CESU-8 represents each of Surrogate Pair by 3-bytes
11532 this.surrogateSize = 3;
11533 break;
11534 case 'ucs2':
11535 case 'utf16le':
11536 // UTF-16 represents each of Surrogate Pair by 2-bytes
11537 this.surrogateSize = 2;
11538 this.detectIncompleteChar = utf16DetectIncompleteChar;
11539 break;
11540 case 'base64':
11541 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
11542 this.surrogateSize = 3;
11543 this.detectIncompleteChar = base64DetectIncompleteChar;
11544 break;
11545 default:
11546 this.write = passThroughWrite;
11547 return;
11548 }
11549
11550 // Enough space to store all bytes of a single character. UTF-8 needs 4
11551 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
11552 this.charBuffer = new Buffer(6);
11553 // Number of bytes received for the current incomplete multi-byte character.
11554 this.charReceived = 0;
11555 // Number of bytes expected for the current incomplete multi-byte character.
11556 this.charLength = 0;
11557 };
11558
11559
11560 // write decodes the given buffer and returns it as JS string that is
11561 // guaranteed to not contain any partial multi-byte characters. Any partial
11562 // character found at the end of the buffer is buffered up, and will be
11563 // returned when calling write again with the remaining bytes.
11564 //
11565 // Note: Converting a Buffer containing an orphan surrogate to a String
11566 // currently works, but converting a String to a Buffer (via `new Buffer`, or
11567 // Buffer#write) will replace incomplete surrogates with the unicode
11568 // replacement character. See https://codereview.chromium.org/121173009/ .
11569 StringDecoder.prototype.write = function(buffer) {
11570 var charStr = '';
11571 // if our last write ended with an incomplete multibyte character
11572 while (this.charLength) {
11573 // determine how many remaining bytes this buffer has to offer for this char
11574 var available = (buffer.length >= this.charLength - this.charReceived) ?
11575 this.charLength - this.charReceived :
11576 buffer.length;
11577
11578 // add the new bytes to the char buffer
11579 buffer.copy(this.charBuffer, this.charReceived, 0, available);
11580 this.charReceived += available;
11581
11582 if (this.charReceived < this.charLength) {
11583 // still not enough chars in this buffer? wait for more ...
11584 return '';
11585 }
11586
11587 // remove bytes belonging to the current character from the buffer
11588 buffer = buffer.slice(available, buffer.length);
11589
11590 // get the character that was split
11591 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
11592
11593 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
11594 var charCode = charStr.charCodeAt(charStr.length - 1);
11595 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
11596 this.charLength += this.surrogateSize;
11597 charStr = '';
11598 continue;
11599 }
11600 this.charReceived = this.charLength = 0;
11601
11602 // if there are no more bytes in this buffer, just emit our char
11603 if (buffer.length === 0) {
11604 return charStr;
11605 }
11606 break;
11607 }
11608
11609 // determine and set charLength / charReceived
11610 this.detectIncompleteChar(buffer);
11611
11612 var end = buffer.length;
11613 if (this.charLength) {
11614 // buffer the incomplete character bytes we got
11615 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
11616 end -= this.charReceived;
11617 }
11618
11619 charStr += buffer.toString(this.encoding, 0, end);
11620
11621 var end = charStr.length - 1;
11622 var charCode = charStr.charCodeAt(end);
11623 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
11624 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
11625 var size = this.surrogateSize;
11626 this.charLength += size;
11627 this.charReceived += size;
11628 this.charBuffer.copy(this.charBuffer, size, 0, size);
11629 buffer.copy(this.charBuffer, 0, 0, size);
11630 return charStr.substring(0, end);
11631 }
11632
11633 // or just emit the charStr
11634 return charStr;
11635 };
11636
11637 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
11638 // the end of the given buffer. If so, it sets this.charLength to the byte
11639 // length that character, and sets this.charReceived to the number of bytes
11640 // that are available for this character.
11641 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
11642 // determine how many bytes we have to check at the end of this buffer
11643 var i = (buffer.length >= 3) ? 3 : buffer.length;
11644
11645 // Figure out if one of the last i bytes of our buffer announces an
11646 // incomplete char.
11647 for (; i > 0; i--) {
11648 var c = buffer[buffer.length - i];
11649
11650 // See http://en.wikipedia.org/wiki/UTF-8#Description
11651
11652 // 110XXXXX
11653 if (i == 1 && c >> 5 == 0x06) {
11654 this.charLength = 2;
11655 break;
11656 }
11657
11658 // 1110XXXX
11659 if (i <= 2 && c >> 4 == 0x0E) {
11660 this.charLength = 3;
11661 break;
11662 }
11663
11664 // 11110XXX
11665 if (i <= 3 && c >> 3 == 0x1E) {
11666 this.charLength = 4;
11667 break;
11668 }
11669 }
11670 this.charReceived = i;
11671 };
11672
11673 StringDecoder.prototype.end = function(buffer) {
11674 var res = '';
11675 if (buffer && buffer.length)
11676 res = this.write(buffer);
11677
11678 if (this.charReceived) {
11679 var cr = this.charReceived;
11680 var buf = this.charBuffer;
11681 var enc = this.encoding;
11682 res += buf.slice(0, cr).toString(enc);
11683 }
11684
11685 return res;
11686 };
11687
11688 function passThroughWrite(buffer) {
11689 return buffer.toString(this.encoding);
11690 }
11691
11692 function utf16DetectIncompleteChar(buffer) {
11693 this.charReceived = buffer.length % 2;
11694 this.charLength = this.charReceived ? 2 : 0;
11695 }
11696
11697 function base64DetectIncompleteChar(buffer) {
11698 this.charReceived = buffer.length % 3;
11699 this.charLength = this.charReceived ? 3 : 0;
11700 }
11701
11702 },{"buffer":7}],28:[function(require,module,exports){
11703 module.exports = function isBuffer(arg) {
11704 return arg && typeof arg === 'object'
11705 && typeof arg.copy === 'function'
11706 && typeof arg.fill === 'function'
11707 && typeof arg.readUInt8 === 'function';
11708 }
11709 },{}],29:[function(require,module,exports){
11710 (function (process,global){
11711 // Copyright Joyent, Inc. and other Node contributors.
11712 //
11713 // Permission is hereby granted, free of charge, to any person obtaining a
11714 // copy of this software and associated documentation files (the
11715 // "Software"), to deal in the Software without restriction, including
11716 // without limitation the rights to use, copy, modify, merge, publish,
11717 // distribute, sublicense, and/or sell copies of the Software, and to permit
11718 // persons to whom the Software is furnished to do so, subject to the
11719 // following conditions:
11720 //
11721 // The above copyright notice and this permission notice shall be included
11722 // in all copies or substantial portions of the Software.
11723 //
11724 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11725 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11726 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11727 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11728 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11729 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11730 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11731
11732 var formatRegExp = /%[sdj%]/g;
11733 exports.format = function(f) {
11734 if (!isString(f)) {
11735 var objects = [];
11736 for (var i = 0; i < arguments.length; i++) {
11737 objects.push(inspect(arguments[i]));
11738 }
11739 return objects.join(' ');
11740 }
11741
11742 var i = 1;
11743 var args = arguments;
11744 var len = args.length;
11745 var str = String(f).replace(formatRegExp, function(x) {
11746 if (x === '%%') return '%';
11747 if (i >= len) return x;
11748 switch (x) {
11749 case '%s': return String(args[i++]);
11750 case '%d': return Number(args[i++]);
11751 case '%j':
11752 try {
11753 return JSON.stringify(args[i++]);
11754 } catch (_) {
11755 return '[Circular]';
11756 }
11757 default:
11758 return x;
11759 }
11760 });
11761 for (var x = args[i]; i < len; x = args[++i]) {
11762 if (isNull(x) || !isObject(x)) {
11763 str += ' ' + x;
11764 } else {
11765 str += ' ' + inspect(x);
11766 }
11767 }
11768 return str;
11769 };
11770
11771
11772 // Mark that a method should not be used.
11773 // Returns a modified function which warns once by default.
11774 // If --no-deprecation is set, then it is a no-op.
11775 exports.deprecate = function(fn, msg) {
11776 // Allow for deprecating things in the process of starting up.
11777 if (isUndefined(global.process)) {
11778 return function() {
11779 return exports.deprecate(fn, msg).apply(this, arguments);
11780 };
11781 }
11782
11783 if (process.noDeprecation === true) {
11784 return fn;
11785 }
11786
11787 var warned = false;
11788 function deprecated() {
11789 if (!warned) {
11790 if (process.throwDeprecation) {
11791 throw new Error(msg);
11792 } else if (process.traceDeprecation) {
11793 console.trace(msg);
11794 } else {
11795 console.error(msg);
11796 }
11797 warned = true;
11798 }
11799 return fn.apply(this, arguments);
11800 }
11801
11802 return deprecated;
11803 };
11804
11805
11806 var debugs = {};
11807 var debugEnviron;
11808 exports.debuglog = function(set) {
11809 if (isUndefined(debugEnviron))
11810 debugEnviron = process.env.NODE_DEBUG || '';
11811 set = set.toUpperCase();
11812 if (!debugs[set]) {
11813 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
11814 var pid = process.pid;
11815 debugs[set] = function() {
11816 var msg = exports.format.apply(exports, arguments);
11817 console.error('%s %d: %s', set, pid, msg);
11818 };
11819 } else {
11820 debugs[set] = function() {};
11821 }
11822 }
11823 return debugs[set];
11824 };
11825
11826
11827 /**
11828 * Echos the value of a value. Trys to print the value out
11829 * in the best way possible given the different types.
11830 *
11831 * @param {Object} obj The object to print out.
11832 * @param {Object} opts Optional options object that alters the output.
11833 */
11834 /* legacy: obj, showHidden, depth, colors*/
11835 function inspect(obj, opts) {
11836 // default options
11837 var ctx = {
11838 seen: [],
11839 stylize: stylizeNoColor
11840 };
11841 // legacy...
11842 if (arguments.length >= 3) ctx.depth = arguments[2];
11843 if (arguments.length >= 4) ctx.colors = arguments[3];
11844 if (isBoolean(opts)) {
11845 // legacy...
11846 ctx.showHidden = opts;
11847 } else if (opts) {
11848 // got an "options" object
11849 exports._extend(ctx, opts);
11850 }
11851 // set default options
11852 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
11853 if (isUndefined(ctx.depth)) ctx.depth = 2;
11854 if (isUndefined(ctx.colors)) ctx.colors = false;
11855 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
11856 if (ctx.colors) ctx.stylize = stylizeWithColor;
11857 return formatValue(ctx, obj, ctx.depth);
11858 }
11859 exports.inspect = inspect;
11860
11861
11862 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
11863 inspect.colors = {
11864 'bold' : [1, 22],
11865 'italic' : [3, 23],
11866 'underline' : [4, 24],
11867 'inverse' : [7, 27],
11868 'white' : [37, 39],
11869 'grey' : [90, 39],
11870 'black' : [30, 39],
11871 'blue' : [34, 39],
11872 'cyan' : [36, 39],
11873 'green' : [32, 39],
11874 'magenta' : [35, 39],
11875 'red' : [31, 39],
11876 'yellow' : [33, 39]
11877 };
11878
11879 // Don't use 'blue' not visible on cmd.exe
11880 inspect.styles = {
11881 'special': 'cyan',
11882 'number': 'yellow',
11883 'boolean': 'yellow',
11884 'undefined': 'grey',
11885 'null': 'bold',
11886 'string': 'green',
11887 'date': 'magenta',
11888 // "name": intentionally not styling
11889 'regexp': 'red'
11890 };
11891
11892
11893 function stylizeWithColor(str, styleType) {
11894 var style = inspect.styles[styleType];
11895
11896 if (style) {
11897 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
11898 '\u001b[' + inspect.colors[style][1] + 'm';
11899 } else {
11900 return str;
11901 }
11902 }
11903
11904
11905 function stylizeNoColor(str, styleType) {
11906 return str;
11907 }
11908
11909
11910 function arrayToHash(array) {
11911 var hash = {};
11912
11913 array.forEach(function(val, idx) {
11914 hash[val] = true;
11915 });
11916
11917 return hash;
11918 }
11919
11920
11921 function formatValue(ctx, value, recurseTimes) {
11922 // Provide a hook for user-specified inspect functions.
11923 // Check that value is an object with an inspect function on it
11924 if (ctx.customInspect &&
11925 value &&
11926 isFunction(value.inspect) &&
11927 // Filter out the util module, it's inspect function is special
11928 value.inspect !== exports.inspect &&
11929 // Also filter out any prototype objects using the circular check.
11930 !(value.constructor && value.constructor.prototype === value)) {
11931 var ret = value.inspect(recurseTimes, ctx);
11932 if (!isString(ret)) {
11933 ret = formatValue(ctx, ret, recurseTimes);
11934 }
11935 return ret;
11936 }
11937
11938 // Primitive types cannot have properties
11939 var primitive = formatPrimitive(ctx, value);
11940 if (primitive) {
11941 return primitive;
11942 }
11943
11944 // Look up the keys of the object.
11945 var keys = Object.keys(value);
11946 var visibleKeys = arrayToHash(keys);
11947
11948 if (ctx.showHidden) {
11949 keys = Object.getOwnPropertyNames(value);
11950 }
11951
11952 // IE doesn't make error fields non-enumerable
11953 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
11954 if (isError(value)
11955 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
11956 return formatError(value);
11957 }
11958
11959 // Some type of object without properties can be shortcutted.
11960 if (keys.length === 0) {
11961 if (isFunction(value)) {
11962 var name = value.name ? ': ' + value.name : '';
11963 return ctx.stylize('[Function' + name + ']', 'special');
11964 }
11965 if (isRegExp(value)) {
11966 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
11967 }
11968 if (isDate(value)) {
11969 return ctx.stylize(Date.prototype.toString.call(value), 'date');
11970 }
11971 if (isError(value)) {
11972 return formatError(value);
11973 }
11974 }
11975
11976 var base = '', array = false, braces = ['{', '}'];
11977
11978 // Make Array say that they are Array
11979 if (isArray(value)) {
11980 array = true;
11981 braces = ['[', ']'];
11982 }
11983
11984 // Make functions say that they are functions
11985 if (isFunction(value)) {
11986 var n = value.name ? ': ' + value.name : '';
11987 base = ' [Function' + n + ']';
11988 }
11989
11990 // Make RegExps say that they are RegExps
11991 if (isRegExp(value)) {
11992 base = ' ' + RegExp.prototype.toString.call(value);
11993 }
11994
11995 // Make dates with properties first say the date
11996 if (isDate(value)) {
11997 base = ' ' + Date.prototype.toUTCString.call(value);
11998 }
11999
12000 // Make error with message first say the error
12001 if (isError(value)) {
12002 base = ' ' + formatError(value);
12003 }
12004
12005 if (keys.length === 0 && (!array || value.length == 0)) {
12006 return braces[0] + base + braces[1];
12007 }
12008
12009 if (recurseTimes < 0) {
12010 if (isRegExp(value)) {
12011 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
12012 } else {
12013 return ctx.stylize('[Object]', 'special');
12014 }
12015 }
12016
12017 ctx.seen.push(value);
12018
12019 var output;
12020 if (array) {
12021 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
12022 } else {
12023 output = keys.map(function(key) {
12024 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
12025 });
12026 }
12027
12028 ctx.seen.pop();
12029
12030 return reduceToSingleString(output, base, braces);
12031 }
12032
12033
12034 function formatPrimitive(ctx, value) {
12035 if (isUndefined(value))
12036 return ctx.stylize('undefined', 'undefined');
12037 if (isString(value)) {
12038 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
12039 .replace(/'/g, "\\'")
12040 .replace(/\\"/g, '"') + '\'';
12041 return ctx.stylize(simple, 'string');
12042 }
12043 if (isNumber(value))
12044 return ctx.stylize('' + value, 'number');
12045 if (isBoolean(value))
12046 return ctx.stylize('' + value, 'boolean');
12047 // For some reason typeof null is "object", so special case here.
12048 if (isNull(value))
12049 return ctx.stylize('null', 'null');
12050 }
12051
12052
12053 function formatError(value) {
12054 return '[' + Error.prototype.toString.call(value) + ']';
12055 }
12056
12057
12058 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
12059 var output = [];
12060 for (var i = 0, l = value.length; i < l; ++i) {
12061 if (hasOwnProperty(value, String(i))) {
12062 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
12063 String(i), true));
12064 } else {
12065 output.push('');
12066 }
12067 }
12068 keys.forEach(function(key) {
12069 if (!key.match(/^\d+$/)) {
12070 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
12071 key, true));
12072 }
12073 });
12074 return output;
12075 }
12076
12077
12078 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
12079 var name, str, desc;
12080 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
12081 if (desc.get) {
12082 if (desc.set) {
12083 str = ctx.stylize('[Getter/Setter]', 'special');
12084 } else {
12085 str = ctx.stylize('[Getter]', 'special');
12086 }
12087 } else {
12088 if (desc.set) {
12089 str = ctx.stylize('[Setter]', 'special');
12090 }
12091 }
12092 if (!hasOwnProperty(visibleKeys, key)) {
12093 name = '[' + key + ']';
12094 }
12095 if (!str) {
12096 if (ctx.seen.indexOf(desc.value) < 0) {
12097 if (isNull(recurseTimes)) {
12098 str = formatValue(ctx, desc.value, null);
12099 } else {
12100 str = formatValue(ctx, desc.value, recurseTimes - 1);
12101 }
12102 if (str.indexOf('\n') > -1) {
12103 if (array) {
12104 str = str.split('\n').map(function(line) {
12105 return ' ' + line;
12106 }).join('\n').substr(2);
12107 } else {
12108 str = '\n' + str.split('\n').map(function(line) {
12109 return ' ' + line;
12110 }).join('\n');
12111 }
12112 }
12113 } else {
12114 str = ctx.stylize('[Circular]', 'special');
12115 }
12116 }
12117 if (isUndefined(name)) {
12118 if (array && key.match(/^\d+$/)) {
12119 return str;
12120 }
12121 name = JSON.stringify('' + key);
12122 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
12123 name = name.substr(1, name.length - 2);
12124 name = ctx.stylize(name, 'name');
12125 } else {
12126 name = name.replace(/'/g, "\\'")
12127 .replace(/\\"/g, '"')
12128 .replace(/(^"|"$)/g, "'");
12129 name = ctx.stylize(name, 'string');
12130 }
12131 }
12132
12133 return name + ': ' + str;
12134 }
12135
12136
12137 function reduceToSingleString(output, base, braces) {
12138 var numLinesEst = 0;
12139 var length = output.reduce(function(prev, cur) {
12140 numLinesEst++;
12141 if (cur.indexOf('\n') >= 0) numLinesEst++;
12142 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
12143 }, 0);
12144
12145 if (length > 60) {
12146 return braces[0] +
12147 (base === '' ? '' : base + '\n ') +
12148 ' ' +
12149 output.join(',\n ') +
12150 ' ' +
12151 braces[1];
12152 }
12153
12154 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
12155 }
12156
12157
12158 // NOTE: These type checking functions intentionally don't use `instanceof`
12159 // because it is fragile and can be easily faked with `Object.create()`.
12160 function isArray(ar) {
12161 return Array.isArray(ar);
12162 }
12163 exports.isArray = isArray;
12164
12165 function isBoolean(arg) {
12166 return typeof arg === 'boolean';
12167 }
12168 exports.isBoolean = isBoolean;
12169
12170 function isNull(arg) {
12171 return arg === null;
12172 }
12173 exports.isNull = isNull;
12174
12175 function isNullOrUndefined(arg) {
12176 return arg == null;
12177 }
12178 exports.isNullOrUndefined = isNullOrUndefined;
12179
12180 function isNumber(arg) {
12181 return typeof arg === 'number';
12182 }
12183 exports.isNumber = isNumber;
12184
12185 function isString(arg) {
12186 return typeof arg === 'string';
12187 }
12188 exports.isString = isString;
12189
12190 function isSymbol(arg) {
12191 return typeof arg === 'symbol';
12192 }
12193 exports.isSymbol = isSymbol;
12194
12195 function isUndefined(arg) {
12196 return arg === void 0;
12197 }
12198 exports.isUndefined = isUndefined;
12199
12200 function isRegExp(re) {
12201 return isObject(re) && objectToString(re) === '[object RegExp]';
12202 }
12203 exports.isRegExp = isRegExp;
12204
12205 function isObject(arg) {
12206 return typeof arg === 'object' && arg !== null;
12207 }
12208 exports.isObject = isObject;
12209
12210 function isDate(d) {
12211 return isObject(d) && objectToString(d) === '[object Date]';
12212 }
12213 exports.isDate = isDate;
12214
12215 function isError(e) {
12216 return isObject(e) &&
12217 (objectToString(e) === '[object Error]' || e instanceof Error);
12218 }
12219 exports.isError = isError;
12220
12221 function isFunction(arg) {
12222 return typeof arg === 'function';
12223 }
12224 exports.isFunction = isFunction;
12225
12226 function isPrimitive(arg) {
12227 return arg === null ||
12228 typeof arg === 'boolean' ||
12229 typeof arg === 'number' ||
12230 typeof arg === 'string' ||
12231 typeof arg === 'symbol' || // ES6 symbol
12232 typeof arg === 'undefined';
12233 }
12234 exports.isPrimitive = isPrimitive;
12235
12236 exports.isBuffer = require('./support/isBuffer');
12237
12238 function objectToString(o) {
12239 return Object.prototype.toString.call(o);
12240 }
12241
12242
12243 function pad(n) {
12244 return n < 10 ? '0' + n.toString(10) : n.toString(10);
12245 }
12246
12247
12248 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
12249 'Oct', 'Nov', 'Dec'];
12250
12251 // 26 Feb 16:19:34
12252 function timestamp() {
12253 var d = new Date();
12254 var time = [pad(d.getHours()),
12255 pad(d.getMinutes()),
12256 pad(d.getSeconds())].join(':');
12257 return [d.getDate(), months[d.getMonth()], time].join(' ');
12258 }
12259
12260
12261 // log is just a thin wrapper to console.log that prepends a timestamp
12262 exports.log = function() {
12263 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
12264 };
12265
12266
12267 /**
12268 * Inherit the prototype methods from one constructor into another.
12269 *
12270 * The Function.prototype.inherits from lang.js rewritten as a standalone
12271 * function (not on Function.prototype). NOTE: If this file is to be loaded
12272 * during bootstrapping this function needs to be rewritten using some native
12273 * functions as prototype setup using normal JavaScript does not work as
12274 * expected during bootstrapping (see mirror.js in r114903).
12275 *
12276 * @param {function} ctor Constructor function which needs to inherit the
12277 * prototype.
12278 * @param {function} superCtor Constructor function to inherit prototype from.
12279 */
12280 exports.inherits = require('inherits');
12281
12282 exports._extend = function(origin, add) {
12283 // Don't do anything if add isn't an object
12284 if (!add || !isObject(add)) return origin;
12285
12286 var keys = Object.keys(add);
12287 var i = keys.length;
12288 while (i--) {
12289 origin[keys[i]] = add[keys[i]];
12290 }
12291 return origin;
12292 };
12293
12294 function hasOwnProperty(obj, prop) {
12295 return Object.prototype.hasOwnProperty.call(obj, prop);
12296 }
12297
12298 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12299 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
12300 // Base58 encoding/decoding
12301 // Originally written by Mike Hearn for BitcoinJ
12302 // Copyright (c) 2011 Google Inc
12303 // Ported to JavaScript by Stefan Thomas
12304 // Merged Buffer refactorings from base58-native by Stephen Pair
12305 // Copyright (c) 2013 BitPay Inc
12306
12307 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
12308 var ALPHABET_MAP = {}
12309 for(var i = 0; i < ALPHABET.length; i++) {
12310 ALPHABET_MAP[ALPHABET.charAt(i)] = i
12311 }
12312 var BASE = 58
12313
12314 function encode(buffer) {
12315 if (buffer.length === 0) return ''
12316
12317 var i, j, digits = [0]
12318 for (i = 0; i < buffer.length; i++) {
12319 for (j = 0; j < digits.length; j++) digits[j] <<= 8
12320
12321 digits[0] += buffer[i]
12322
12323 var carry = 0
12324 for (j = 0; j < digits.length; ++j) {
12325 digits[j] += carry
12326
12327 carry = (digits[j] / BASE) | 0
12328 digits[j] %= BASE
12329 }
12330
12331 while (carry) {
12332 digits.push(carry % BASE)
12333
12334 carry = (carry / BASE) | 0
12335 }
12336 }
12337
12338 // deal with leading zeros
12339 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
12340
12341 // convert digits to a string
12342 var stringOutput = ""
12343 for (var i = digits.length - 1; i >= 0; i--) {
12344 stringOutput = stringOutput + ALPHABET[digits[i]]
12345 }
12346 return stringOutput
12347 }
12348
12349 function decode(string) {
12350 if (string.length === 0) return []
12351
12352 var i, j, bytes = [0]
12353 for (i = 0; i < string.length; i++) {
12354 var c = string[i]
12355 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
12356
12357 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
12358 bytes[0] += ALPHABET_MAP[c]
12359
12360 var carry = 0
12361 for (j = 0; j < bytes.length; ++j) {
12362 bytes[j] += carry
12363
12364 carry = bytes[j] >> 8
12365 bytes[j] &= 0xff
12366 }
12367
12368 while (carry) {
12369 bytes.push(carry & 0xff)
12370
12371 carry >>= 8
12372 }
12373 }
12374
12375 // deal with leading zeros
12376 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
12377
12378 return bytes.reverse()
12379 }
12380
12381 module.exports = {
12382 encode: encode,
12383 decode: decode
12384 }
12385
12386 },{}],31:[function(require,module,exports){
12387 (function (Buffer){
12388 'use strict'
12389
12390 var base58 = require('bs58')
12391 var createHash = require('create-hash')
12392
12393 // SHA256(SHA256(buffer))
12394 function sha256x2 (buffer) {
12395 buffer = createHash('sha256').update(buffer).digest()
12396 return createHash('sha256').update(buffer).digest()
12397 }
12398
12399 // Encode a buffer as a base58-check encoded string
12400 function encode (payload) {
12401 var checksum = sha256x2(payload).slice(0, 4)
12402
12403 return base58.encode(Buffer.concat([
12404 payload,
12405 checksum
12406 ]))
12407 }
12408
12409 // Decode a base58-check encoded string to a buffer
12410 function decode (string) {
12411 var buffer = new Buffer(base58.decode(string))
12412
12413 var payload = buffer.slice(0, -4)
12414 var checksum = buffer.slice(-4)
12415 var newChecksum = sha256x2(payload).slice(0, 4)
12416
12417 for (var i = 0; i < newChecksum.length; ++i) {
12418 if (newChecksum[i] === checksum[i]) continue
12419
12420 throw new Error('Invalid checksum')
12421 }
12422
12423 return payload
12424 }
12425
12426 module.exports = {
12427 encode: encode,
12428 decode: decode
12429 }
12430
12431 }).call(this,require("buffer").Buffer)
12432 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
12433 (function (Buffer){
12434 'use strict';
12435 var inherits = require('inherits')
12436 var md5 = require('./md5')
12437 var rmd160 = require('ripemd160')
12438 var sha = require('sha.js')
12439
12440 var Transform = require('stream').Transform
12441
12442 function HashNoConstructor(hash) {
12443 Transform.call(this)
12444
12445 this._hash = hash
12446 this.buffers = []
12447 }
12448
12449 inherits(HashNoConstructor, Transform)
12450
12451 HashNoConstructor.prototype._transform = function (data, _, next) {
12452 this.buffers.push(data)
12453
12454 next()
12455 }
12456
12457 HashNoConstructor.prototype._flush = function (next) {
12458 this.push(this.digest())
12459 next()
12460 }
12461
12462 HashNoConstructor.prototype.update = function (data, enc) {
12463 if (typeof data === 'string') {
12464 data = new Buffer(data, enc)
12465 }
12466
12467 this.buffers.push(data)
12468 return this
12469 }
12470
12471 HashNoConstructor.prototype.digest = function (enc) {
12472 var buf = Buffer.concat(this.buffers)
12473 var r = this._hash(buf)
12474 this.buffers = null
12475
12476 return enc ? r.toString(enc) : r
12477 }
12478
12479 function Hash(hash) {
12480 Transform.call(this)
12481
12482 this._hash = hash
12483 }
12484
12485 inherits(Hash, Transform)
12486
12487 Hash.prototype._transform = function (data, enc, next) {
12488 if (enc) data = new Buffer(data, enc)
12489
12490 this._hash.update(data)
12491
12492 next()
12493 }
12494
12495 Hash.prototype._flush = function (next) {
12496 this.push(this._hash.digest())
12497 this._hash = null
12498
12499 next()
12500 }
12501
12502 Hash.prototype.update = function (data, enc) {
12503 if (typeof data === 'string') {
12504 data = new Buffer(data, enc)
12505 }
12506
12507 this._hash.update(data)
12508 return this
12509 }
12510
12511 Hash.prototype.digest = function (enc) {
12512 var outData = this._hash.digest()
12513
12514 return enc ? outData.toString(enc) : outData
12515 }
12516
12517 module.exports = function createHash (alg) {
12518 if ('md5' === alg) return new HashNoConstructor(md5)
12519 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
12520
12521 return new Hash(sha(alg))
12522 }
12523
12524 }).call(this,require("buffer").Buffer)
12525 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
12526 (function (Buffer){
12527 'use strict';
12528 var intSize = 4;
12529 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
12530 var chrsz = 8;
12531
12532 function toArray(buf, bigEndian) {
12533 if ((buf.length % intSize) !== 0) {
12534 var len = buf.length + (intSize - (buf.length % intSize));
12535 buf = Buffer.concat([buf, zeroBuffer], len);
12536 }
12537
12538 var arr = [];
12539 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
12540 for (var i = 0; i < buf.length; i += intSize) {
12541 arr.push(fn.call(buf, i));
12542 }
12543 return arr;
12544 }
12545
12546 function toBuffer(arr, size, bigEndian) {
12547 var buf = new Buffer(size);
12548 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
12549 for (var i = 0; i < arr.length; i++) {
12550 fn.call(buf, arr[i], i * 4, true);
12551 }
12552 return buf;
12553 }
12554
12555 function hash(buf, fn, hashSize, bigEndian) {
12556 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
12557 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
12558 return toBuffer(arr, hashSize, bigEndian);
12559 }
12560 exports.hash = hash;
12561 }).call(this,require("buffer").Buffer)
12562 },{"buffer":7}],34:[function(require,module,exports){
12563 'use strict';
12564 /*
12565 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
12566 * Digest Algorithm, as defined in RFC 1321.
12567 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
12568 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12569 * Distributed under the BSD License
12570 * See http://pajhome.org.uk/crypt/md5 for more info.
12571 */
12572
12573 var helpers = require('./helpers');
12574
12575 /*
12576 * Calculate the MD5 of an array of little-endian words, and a bit length
12577 */
12578 function core_md5(x, len)
12579 {
12580 /* append padding */
12581 x[len >> 5] |= 0x80 << ((len) % 32);
12582 x[(((len + 64) >>> 9) << 4) + 14] = len;
12583
12584 var a = 1732584193;
12585 var b = -271733879;
12586 var c = -1732584194;
12587 var d = 271733878;
12588
12589 for(var i = 0; i < x.length; i += 16)
12590 {
12591 var olda = a;
12592 var oldb = b;
12593 var oldc = c;
12594 var oldd = d;
12595
12596 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
12597 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
12598 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
12599 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
12600 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
12601 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
12602 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
12603 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
12604 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
12605 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
12606 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
12607 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
12608 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
12609 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
12610 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
12611 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
12612
12613 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
12614 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
12615 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
12616 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
12617 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
12618 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
12619 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
12620 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
12621 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
12622 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
12623 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
12624 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
12625 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
12626 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
12627 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
12628 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
12629
12630 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
12631 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
12632 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
12633 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
12634 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
12635 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
12636 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
12637 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
12638 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
12639 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
12640 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
12641 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
12642 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
12643 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
12644 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
12645 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
12646
12647 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
12648 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
12649 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
12650 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
12651 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
12652 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
12653 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
12654 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
12655 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
12656 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
12657 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
12658 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
12659 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
12660 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
12661 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
12662 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
12663
12664 a = safe_add(a, olda);
12665 b = safe_add(b, oldb);
12666 c = safe_add(c, oldc);
12667 d = safe_add(d, oldd);
12668 }
12669 return Array(a, b, c, d);
12670
12671 }
12672
12673 /*
12674 * These functions implement the four basic operations the algorithm uses.
12675 */
12676 function md5_cmn(q, a, b, x, s, t)
12677 {
12678 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
12679 }
12680 function md5_ff(a, b, c, d, x, s, t)
12681 {
12682 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
12683 }
12684 function md5_gg(a, b, c, d, x, s, t)
12685 {
12686 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
12687 }
12688 function md5_hh(a, b, c, d, x, s, t)
12689 {
12690 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
12691 }
12692 function md5_ii(a, b, c, d, x, s, t)
12693 {
12694 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
12695 }
12696
12697 /*
12698 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
12699 * to work around bugs in some JS interpreters.
12700 */
12701 function safe_add(x, y)
12702 {
12703 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
12704 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
12705 return (msw << 16) | (lsw & 0xFFFF);
12706 }
12707
12708 /*
12709 * Bitwise rotate a 32-bit number to the left.
12710 */
12711 function bit_rol(num, cnt)
12712 {
12713 return (num << cnt) | (num >>> (32 - cnt));
12714 }
12715
12716 module.exports = function md5(buf) {
12717 return helpers.hash(buf, core_md5, 16);
12718 };
12719 },{"./helpers":33}],35:[function(require,module,exports){
12720 arguments[4][12][0].apply(exports,arguments)
12721 },{"dup":12}],36:[function(require,module,exports){
12722 (function (Buffer){
12723 /*
12724 CryptoJS v3.1.2
12725 code.google.com/p/crypto-js
12726 (c) 2009-2013 by Jeff Mott. All rights reserved.
12727 code.google.com/p/crypto-js/wiki/License
12728 */
12729 /** @preserve
12730 (c) 2012 by Cédric Mesnil. All rights reserved.
12731
12732 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
12733
12734 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
12735 - 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.
12736
12737 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.
12738 */
12739
12740 // constants table
12741 var zl = [
12742 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
12743 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
12744 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
12745 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
12746 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
12747 ]
12748
12749 var zr = [
12750 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
12751 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
12752 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
12753 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12754 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
12755 ]
12756
12757 var sl = [
12758 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
12759 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
12760 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
12761 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
12762 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
12763 ]
12764
12765 var sr = [
12766 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
12767 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
12768 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
12769 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
12770 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
12771 ]
12772
12773 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
12774 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
12775
12776 function bytesToWords (bytes) {
12777 var words = []
12778 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
12779 words[b >>> 5] |= bytes[i] << (24 - b % 32)
12780 }
12781 return words
12782 }
12783
12784 function wordsToBytes (words) {
12785 var bytes = []
12786 for (var b = 0; b < words.length * 32; b += 8) {
12787 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
12788 }
12789 return bytes
12790 }
12791
12792 function processBlock (H, M, offset) {
12793 // swap endian
12794 for (var i = 0; i < 16; i++) {
12795 var offset_i = offset + i
12796 var M_offset_i = M[offset_i]
12797
12798 // Swap
12799 M[offset_i] = (
12800 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
12801 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
12802 )
12803 }
12804
12805 // Working variables
12806 var al, bl, cl, dl, el
12807 var ar, br, cr, dr, er
12808
12809 ar = al = H[0]
12810 br = bl = H[1]
12811 cr = cl = H[2]
12812 dr = dl = H[3]
12813 er = el = H[4]
12814
12815 // computation
12816 var t
12817 for (i = 0; i < 80; i += 1) {
12818 t = (al + M[offset + zl[i]]) | 0
12819 if (i < 16) {
12820 t += f1(bl, cl, dl) + hl[0]
12821 } else if (i < 32) {
12822 t += f2(bl, cl, dl) + hl[1]
12823 } else if (i < 48) {
12824 t += f3(bl, cl, dl) + hl[2]
12825 } else if (i < 64) {
12826 t += f4(bl, cl, dl) + hl[3]
12827 } else {// if (i<80) {
12828 t += f5(bl, cl, dl) + hl[4]
12829 }
12830 t = t | 0
12831 t = rotl(t, sl[i])
12832 t = (t + el) | 0
12833 al = el
12834 el = dl
12835 dl = rotl(cl, 10)
12836 cl = bl
12837 bl = t
12838
12839 t = (ar + M[offset + zr[i]]) | 0
12840 if (i < 16) {
12841 t += f5(br, cr, dr) + hr[0]
12842 } else if (i < 32) {
12843 t += f4(br, cr, dr) + hr[1]
12844 } else if (i < 48) {
12845 t += f3(br, cr, dr) + hr[2]
12846 } else if (i < 64) {
12847 t += f2(br, cr, dr) + hr[3]
12848 } else {// if (i<80) {
12849 t += f1(br, cr, dr) + hr[4]
12850 }
12851
12852 t = t | 0
12853 t = rotl(t, sr[i])
12854 t = (t + er) | 0
12855 ar = er
12856 er = dr
12857 dr = rotl(cr, 10)
12858 cr = br
12859 br = t
12860 }
12861
12862 // intermediate hash value
12863 t = (H[1] + cl + dr) | 0
12864 H[1] = (H[2] + dl + er) | 0
12865 H[2] = (H[3] + el + ar) | 0
12866 H[3] = (H[4] + al + br) | 0
12867 H[4] = (H[0] + bl + cr) | 0
12868 H[0] = t
12869 }
12870
12871 function f1 (x, y, z) {
12872 return ((x) ^ (y) ^ (z))
12873 }
12874
12875 function f2 (x, y, z) {
12876 return (((x) & (y)) | ((~x) & (z)))
12877 }
12878
12879 function f3 (x, y, z) {
12880 return (((x) | (~(y))) ^ (z))
12881 }
12882
12883 function f4 (x, y, z) {
12884 return (((x) & (z)) | ((y) & (~(z))))
12885 }
12886
12887 function f5 (x, y, z) {
12888 return ((x) ^ ((y) | (~(z))))
12889 }
12890
12891 function rotl (x, n) {
12892 return (x << n) | (x >>> (32 - n))
12893 }
12894
12895 function ripemd160 (message) {
12896 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
12897
12898 if (typeof message === 'string') {
12899 message = new Buffer(message, 'utf8')
12900 }
12901
12902 var m = bytesToWords(message)
12903
12904 var nBitsLeft = message.length * 8
12905 var nBitsTotal = message.length * 8
12906
12907 // Add padding
12908 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
12909 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
12910 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
12911 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
12912 )
12913
12914 for (var i = 0; i < m.length; i += 16) {
12915 processBlock(H, m, i)
12916 }
12917
12918 // swap endian
12919 for (i = 0; i < 5; i++) {
12920 // shortcut
12921 var H_i = H[i]
12922
12923 // Swap
12924 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
12925 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
12926 }
12927
12928 var digestbytes = wordsToBytes(H)
12929 return new Buffer(digestbytes)
12930 }
12931
12932 module.exports = ripemd160
12933
12934 }).call(this,require("buffer").Buffer)
12935 },{"buffer":7}],37:[function(require,module,exports){
12936 (function (Buffer){
12937 // prototype class for hash functions
12938 function Hash (blockSize, finalSize) {
12939 this._block = new Buffer(blockSize)
12940 this._finalSize = finalSize
12941 this._blockSize = blockSize
12942 this._len = 0
12943 this._s = 0
12944 }
12945
12946 Hash.prototype.update = function (data, enc) {
12947 if (typeof data === 'string') {
12948 enc = enc || 'utf8'
12949 data = new Buffer(data, enc)
12950 }
12951
12952 var l = this._len += data.length
12953 var s = this._s || 0
12954 var f = 0
12955 var buffer = this._block
12956
12957 while (s < l) {
12958 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
12959 var ch = (t - f)
12960
12961 for (var i = 0; i < ch; i++) {
12962 buffer[(s % this._blockSize) + i] = data[i + f]
12963 }
12964
12965 s += ch
12966 f += ch
12967
12968 if ((s % this._blockSize) === 0) {
12969 this._update(buffer)
12970 }
12971 }
12972 this._s = s
12973
12974 return this
12975 }
12976
12977 Hash.prototype.digest = function (enc) {
12978 // Suppose the length of the message M, in bits, is l
12979 var l = this._len * 8
12980
12981 // Append the bit 1 to the end of the message
12982 this._block[this._len % this._blockSize] = 0x80
12983
12984 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
12985 this._block.fill(0, this._len % this._blockSize + 1)
12986
12987 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
12988 this._update(this._block)
12989 this._block.fill(0)
12990 }
12991
12992 // to this append the block which is equal to the number l written in binary
12993 // TODO: handle case where l is > Math.pow(2, 29)
12994 this._block.writeInt32BE(l, this._blockSize - 4)
12995
12996 var hash = this._update(this._block) || this._hash()
12997
12998 return enc ? hash.toString(enc) : hash
12999 }
13000
13001 Hash.prototype._update = function () {
13002 throw new Error('_update must be implemented by subclass')
13003 }
13004
13005 module.exports = Hash
13006
13007 }).call(this,require("buffer").Buffer)
13008 },{"buffer":7}],38:[function(require,module,exports){
13009 var exports = module.exports = function SHA (algorithm) {
13010 algorithm = algorithm.toLowerCase()
13011
13012 var Algorithm = exports[algorithm]
13013 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
13014
13015 return new Algorithm()
13016 }
13017
13018 exports.sha = require('./sha')
13019 exports.sha1 = require('./sha1')
13020 exports.sha224 = require('./sha224')
13021 exports.sha256 = require('./sha256')
13022 exports.sha384 = require('./sha384')
13023 exports.sha512 = require('./sha512')
13024
13025 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
13026 (function (Buffer){
13027 /*
13028 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
13029 * in FIPS PUB 180-1
13030 * This source code is derived from sha1.js of the same repository.
13031 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
13032 * operation was added.
13033 */
13034
13035 var inherits = require('inherits')
13036 var Hash = require('./hash')
13037
13038 var W = new Array(80)
13039
13040 function Sha () {
13041 this.init()
13042 this._w = W
13043
13044 Hash.call(this, 64, 56)
13045 }
13046
13047 inherits(Sha, Hash)
13048
13049 Sha.prototype.init = function () {
13050 this._a = 0x67452301 | 0
13051 this._b = 0xefcdab89 | 0
13052 this._c = 0x98badcfe | 0
13053 this._d = 0x10325476 | 0
13054 this._e = 0xc3d2e1f0 | 0
13055
13056 return this
13057 }
13058
13059 /*
13060 * Bitwise rotate a 32-bit number to the left.
13061 */
13062 function rol (num, cnt) {
13063 return (num << cnt) | (num >>> (32 - cnt))
13064 }
13065
13066 Sha.prototype._update = function (M) {
13067 var W = this._w
13068
13069 var a = this._a
13070 var b = this._b
13071 var c = this._c
13072 var d = this._d
13073 var e = this._e
13074
13075 var j = 0, k
13076
13077 /*
13078 * SHA-1 has a bitwise rotate left operation. But, SHA is not
13079 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
13080 */
13081 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
13082 function loop (w, f) {
13083 W[j] = w
13084
13085 var t = rol(a, 5) + f + e + w + k
13086
13087 e = d
13088 d = c
13089 c = rol(b, 30)
13090 b = a
13091 a = t
13092 j++
13093 }
13094
13095 k = 1518500249
13096 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
13097 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
13098 k = 1859775393
13099 while (j < 40) loop(calcW(), b ^ c ^ d)
13100 k = -1894007588
13101 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
13102 k = -899497514
13103 while (j < 80) loop(calcW(), b ^ c ^ d)
13104
13105 this._a = (a + this._a) | 0
13106 this._b = (b + this._b) | 0
13107 this._c = (c + this._c) | 0
13108 this._d = (d + this._d) | 0
13109 this._e = (e + this._e) | 0
13110 }
13111
13112 Sha.prototype._hash = function () {
13113 var H = new Buffer(20)
13114
13115 H.writeInt32BE(this._a | 0, 0)
13116 H.writeInt32BE(this._b | 0, 4)
13117 H.writeInt32BE(this._c | 0, 8)
13118 H.writeInt32BE(this._d | 0, 12)
13119 H.writeInt32BE(this._e | 0, 16)
13120
13121 return H
13122 }
13123
13124 module.exports = Sha
13125
13126
13127 }).call(this,require("buffer").Buffer)
13128 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
13129 (function (Buffer){
13130 /*
13131 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
13132 * in FIPS PUB 180-1
13133 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
13134 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13135 * Distributed under the BSD License
13136 * See http://pajhome.org.uk/crypt/md5 for details.
13137 */
13138
13139 var inherits = require('inherits')
13140 var Hash = require('./hash')
13141
13142 var W = new Array(80)
13143
13144 function Sha1 () {
13145 this.init()
13146 this._w = W
13147
13148 Hash.call(this, 64, 56)
13149 }
13150
13151 inherits(Sha1, Hash)
13152
13153 Sha1.prototype.init = function () {
13154 this._a = 0x67452301 | 0
13155 this._b = 0xefcdab89 | 0
13156 this._c = 0x98badcfe | 0
13157 this._d = 0x10325476 | 0
13158 this._e = 0xc3d2e1f0 | 0
13159
13160 return this
13161 }
13162
13163 /*
13164 * Bitwise rotate a 32-bit number to the left.
13165 */
13166 function rol (num, cnt) {
13167 return (num << cnt) | (num >>> (32 - cnt))
13168 }
13169
13170 Sha1.prototype._update = function (M) {
13171 var W = this._w
13172
13173 var a = this._a
13174 var b = this._b
13175 var c = this._c
13176 var d = this._d
13177 var e = this._e
13178
13179 var j = 0, k
13180
13181 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
13182 function loop (w, f) {
13183 W[j] = w
13184
13185 var t = rol(a, 5) + f + e + w + k
13186
13187 e = d
13188 d = c
13189 c = rol(b, 30)
13190 b = a
13191 a = t
13192 j++
13193 }
13194
13195 k = 1518500249
13196 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
13197 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
13198 k = 1859775393
13199 while (j < 40) loop(calcW(), b ^ c ^ d)
13200 k = -1894007588
13201 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
13202 k = -899497514
13203 while (j < 80) loop(calcW(), b ^ c ^ d)
13204
13205 this._a = (a + this._a) | 0
13206 this._b = (b + this._b) | 0
13207 this._c = (c + this._c) | 0
13208 this._d = (d + this._d) | 0
13209 this._e = (e + this._e) | 0
13210 }
13211
13212 Sha1.prototype._hash = function () {
13213 var H = new Buffer(20)
13214
13215 H.writeInt32BE(this._a | 0, 0)
13216 H.writeInt32BE(this._b | 0, 4)
13217 H.writeInt32BE(this._c | 0, 8)
13218 H.writeInt32BE(this._d | 0, 12)
13219 H.writeInt32BE(this._e | 0, 16)
13220
13221 return H
13222 }
13223
13224 module.exports = Sha1
13225
13226 }).call(this,require("buffer").Buffer)
13227 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
13228 (function (Buffer){
13229 /**
13230 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
13231 * in FIPS 180-2
13232 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
13233 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13234 *
13235 */
13236
13237 var inherits = require('inherits')
13238 var Sha256 = require('./sha256')
13239 var Hash = require('./hash')
13240
13241 var W = new Array(64)
13242
13243 function Sha224 () {
13244 this.init()
13245
13246 this._w = W // new Array(64)
13247
13248 Hash.call(this, 64, 56)
13249 }
13250
13251 inherits(Sha224, Sha256)
13252
13253 Sha224.prototype.init = function () {
13254 this._a = 0xc1059ed8 | 0
13255 this._b = 0x367cd507 | 0
13256 this._c = 0x3070dd17 | 0
13257 this._d = 0xf70e5939 | 0
13258 this._e = 0xffc00b31 | 0
13259 this._f = 0x68581511 | 0
13260 this._g = 0x64f98fa7 | 0
13261 this._h = 0xbefa4fa4 | 0
13262
13263 return this
13264 }
13265
13266 Sha224.prototype._hash = function () {
13267 var H = new Buffer(28)
13268
13269 H.writeInt32BE(this._a, 0)
13270 H.writeInt32BE(this._b, 4)
13271 H.writeInt32BE(this._c, 8)
13272 H.writeInt32BE(this._d, 12)
13273 H.writeInt32BE(this._e, 16)
13274 H.writeInt32BE(this._f, 20)
13275 H.writeInt32BE(this._g, 24)
13276
13277 return H
13278 }
13279
13280 module.exports = Sha224
13281
13282 }).call(this,require("buffer").Buffer)
13283 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
13284 (function (Buffer){
13285 /**
13286 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
13287 * in FIPS 180-2
13288 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
13289 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13290 *
13291 */
13292
13293 var inherits = require('inherits')
13294 var Hash = require('./hash')
13295
13296 var K = [
13297 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
13298 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
13299 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
13300 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
13301 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
13302 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
13303 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
13304 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
13305 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
13306 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
13307 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
13308 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
13309 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
13310 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
13311 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
13312 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
13313 ]
13314
13315 var W = new Array(64)
13316
13317 function Sha256 () {
13318 this.init()
13319
13320 this._w = W // new Array(64)
13321
13322 Hash.call(this, 64, 56)
13323 }
13324
13325 inherits(Sha256, Hash)
13326
13327 Sha256.prototype.init = function () {
13328 this._a = 0x6a09e667 | 0
13329 this._b = 0xbb67ae85 | 0
13330 this._c = 0x3c6ef372 | 0
13331 this._d = 0xa54ff53a | 0
13332 this._e = 0x510e527f | 0
13333 this._f = 0x9b05688c | 0
13334 this._g = 0x1f83d9ab | 0
13335 this._h = 0x5be0cd19 | 0
13336
13337 return this
13338 }
13339
13340 function S (X, n) {
13341 return (X >>> n) | (X << (32 - n))
13342 }
13343
13344 function R (X, n) {
13345 return (X >>> n)
13346 }
13347
13348 function Ch (x, y, z) {
13349 return ((x & y) ^ ((~x) & z))
13350 }
13351
13352 function Maj (x, y, z) {
13353 return ((x & y) ^ (x & z) ^ (y & z))
13354 }
13355
13356 function Sigma0256 (x) {
13357 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
13358 }
13359
13360 function Sigma1256 (x) {
13361 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
13362 }
13363
13364 function Gamma0256 (x) {
13365 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
13366 }
13367
13368 function Gamma1256 (x) {
13369 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
13370 }
13371
13372 Sha256.prototype._update = function (M) {
13373 var W = this._w
13374
13375 var a = this._a | 0
13376 var b = this._b | 0
13377 var c = this._c | 0
13378 var d = this._d | 0
13379 var e = this._e | 0
13380 var f = this._f | 0
13381 var g = this._g | 0
13382 var h = this._h | 0
13383
13384 var j = 0
13385
13386 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
13387 function loop (w) {
13388 W[j] = w
13389
13390 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
13391 var T2 = Sigma0256(a) + Maj(a, b, c)
13392
13393 h = g
13394 g = f
13395 f = e
13396 e = d + T1
13397 d = c
13398 c = b
13399 b = a
13400 a = T1 + T2
13401
13402 j++
13403 }
13404
13405 while (j < 16) loop(M.readInt32BE(j * 4))
13406 while (j < 64) loop(calcW())
13407
13408 this._a = (a + this._a) | 0
13409 this._b = (b + this._b) | 0
13410 this._c = (c + this._c) | 0
13411 this._d = (d + this._d) | 0
13412 this._e = (e + this._e) | 0
13413 this._f = (f + this._f) | 0
13414 this._g = (g + this._g) | 0
13415 this._h = (h + this._h) | 0
13416 }
13417
13418 Sha256.prototype._hash = function () {
13419 var H = new Buffer(32)
13420
13421 H.writeInt32BE(this._a, 0)
13422 H.writeInt32BE(this._b, 4)
13423 H.writeInt32BE(this._c, 8)
13424 H.writeInt32BE(this._d, 12)
13425 H.writeInt32BE(this._e, 16)
13426 H.writeInt32BE(this._f, 20)
13427 H.writeInt32BE(this._g, 24)
13428 H.writeInt32BE(this._h, 28)
13429
13430 return H
13431 }
13432
13433 module.exports = Sha256
13434
13435 }).call(this,require("buffer").Buffer)
13436 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
13437 (function (Buffer){
13438 var inherits = require('inherits')
13439 var SHA512 = require('./sha512')
13440 var Hash = require('./hash')
13441
13442 var W = new Array(160)
13443
13444 function Sha384 () {
13445 this.init()
13446 this._w = W
13447
13448 Hash.call(this, 128, 112)
13449 }
13450
13451 inherits(Sha384, SHA512)
13452
13453 Sha384.prototype.init = function () {
13454 this._a = 0xcbbb9d5d | 0
13455 this._b = 0x629a292a | 0
13456 this._c = 0x9159015a | 0
13457 this._d = 0x152fecd8 | 0
13458 this._e = 0x67332667 | 0
13459 this._f = 0x8eb44a87 | 0
13460 this._g = 0xdb0c2e0d | 0
13461 this._h = 0x47b5481d | 0
13462
13463 this._al = 0xc1059ed8 | 0
13464 this._bl = 0x367cd507 | 0
13465 this._cl = 0x3070dd17 | 0
13466 this._dl = 0xf70e5939 | 0
13467 this._el = 0xffc00b31 | 0
13468 this._fl = 0x68581511 | 0
13469 this._gl = 0x64f98fa7 | 0
13470 this._hl = 0xbefa4fa4 | 0
13471
13472 return this
13473 }
13474
13475 Sha384.prototype._hash = function () {
13476 var H = new Buffer(48)
13477
13478 function writeInt64BE (h, l, offset) {
13479 H.writeInt32BE(h, offset)
13480 H.writeInt32BE(l, offset + 4)
13481 }
13482
13483 writeInt64BE(this._a, this._al, 0)
13484 writeInt64BE(this._b, this._bl, 8)
13485 writeInt64BE(this._c, this._cl, 16)
13486 writeInt64BE(this._d, this._dl, 24)
13487 writeInt64BE(this._e, this._el, 32)
13488 writeInt64BE(this._f, this._fl, 40)
13489
13490 return H
13491 }
13492
13493 module.exports = Sha384
13494
13495 }).call(this,require("buffer").Buffer)
13496 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
13497 (function (Buffer){
13498 var inherits = require('inherits')
13499 var Hash = require('./hash')
13500
13501 var K = [
13502 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
13503 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
13504 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
13505 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
13506 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
13507 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
13508 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
13509 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
13510 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
13511 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
13512 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
13513 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
13514 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
13515 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
13516 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
13517 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
13518 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
13519 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
13520 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
13521 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
13522 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
13523 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
13524 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
13525 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
13526 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
13527 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
13528 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
13529 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
13530 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
13531 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
13532 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
13533 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
13534 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
13535 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
13536 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
13537 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
13538 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
13539 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
13540 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
13541 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
13542 ]
13543
13544 var W = new Array(160)
13545
13546 function Sha512 () {
13547 this.init()
13548 this._w = W
13549
13550 Hash.call(this, 128, 112)
13551 }
13552
13553 inherits(Sha512, Hash)
13554
13555 Sha512.prototype.init = function () {
13556 this._a = 0x6a09e667 | 0
13557 this._b = 0xbb67ae85 | 0
13558 this._c = 0x3c6ef372 | 0
13559 this._d = 0xa54ff53a | 0
13560 this._e = 0x510e527f | 0
13561 this._f = 0x9b05688c | 0
13562 this._g = 0x1f83d9ab | 0
13563 this._h = 0x5be0cd19 | 0
13564
13565 this._al = 0xf3bcc908 | 0
13566 this._bl = 0x84caa73b | 0
13567 this._cl = 0xfe94f82b | 0
13568 this._dl = 0x5f1d36f1 | 0
13569 this._el = 0xade682d1 | 0
13570 this._fl = 0x2b3e6c1f | 0
13571 this._gl = 0xfb41bd6b | 0
13572 this._hl = 0x137e2179 | 0
13573
13574 return this
13575 }
13576
13577 function S (X, Xl, n) {
13578 return (X >>> n) | (Xl << (32 - n))
13579 }
13580
13581 function Ch (x, y, z) {
13582 return ((x & y) ^ ((~x) & z))
13583 }
13584
13585 function Maj (x, y, z) {
13586 return ((x & y) ^ (x & z) ^ (y & z))
13587 }
13588
13589 Sha512.prototype._update = function (M) {
13590 var W = this._w
13591
13592 var a = this._a | 0
13593 var b = this._b | 0
13594 var c = this._c | 0
13595 var d = this._d | 0
13596 var e = this._e | 0
13597 var f = this._f | 0
13598 var g = this._g | 0
13599 var h = this._h | 0
13600
13601 var al = this._al | 0
13602 var bl = this._bl | 0
13603 var cl = this._cl | 0
13604 var dl = this._dl | 0
13605 var el = this._el | 0
13606 var fl = this._fl | 0
13607 var gl = this._gl | 0
13608 var hl = this._hl | 0
13609
13610 var i = 0, j = 0
13611 var Wi, Wil
13612 function calcW () {
13613 var x = W[j - 15 * 2]
13614 var xl = W[j - 15 * 2 + 1]
13615 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
13616 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
13617
13618 x = W[j - 2 * 2]
13619 xl = W[j - 2 * 2 + 1]
13620 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
13621 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
13622
13623 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
13624 var Wi7 = W[j - 7 * 2]
13625 var Wi7l = W[j - 7 * 2 + 1]
13626
13627 var Wi16 = W[j - 16 * 2]
13628 var Wi16l = W[j - 16 * 2 + 1]
13629
13630 Wil = gamma0l + Wi7l
13631 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
13632 Wil = Wil + gamma1l
13633 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
13634 Wil = Wil + Wi16l
13635 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
13636 }
13637
13638 function loop () {
13639 W[j] = Wi
13640 W[j + 1] = Wil
13641
13642 var maj = Maj(a, b, c)
13643 var majl = Maj(al, bl, cl)
13644
13645 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
13646 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
13647 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
13648 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
13649
13650 // t1 = h + sigma1 + ch + K[i] + W[i]
13651 var Ki = K[j]
13652 var Kil = K[j + 1]
13653
13654 var ch = Ch(e, f, g)
13655 var chl = Ch(el, fl, gl)
13656
13657 var t1l = hl + sigma1l
13658 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
13659 t1l = t1l + chl
13660 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
13661 t1l = t1l + Kil
13662 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
13663 t1l = t1l + Wil
13664 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
13665
13666 // t2 = sigma0 + maj
13667 var t2l = sigma0l + majl
13668 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
13669
13670 h = g
13671 hl = gl
13672 g = f
13673 gl = fl
13674 f = e
13675 fl = el
13676 el = (dl + t1l) | 0
13677 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
13678 d = c
13679 dl = cl
13680 c = b
13681 cl = bl
13682 b = a
13683 bl = al
13684 al = (t1l + t2l) | 0
13685 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
13686
13687 i++
13688 j += 2
13689 }
13690
13691 while (i < 16) {
13692 Wi = M.readInt32BE(j * 4)
13693 Wil = M.readInt32BE(j * 4 + 4)
13694
13695 loop()
13696 }
13697
13698 while (i < 80) {
13699 calcW()
13700 loop()
13701 }
13702
13703 this._al = (this._al + al) | 0
13704 this._bl = (this._bl + bl) | 0
13705 this._cl = (this._cl + cl) | 0
13706 this._dl = (this._dl + dl) | 0
13707 this._el = (this._el + el) | 0
13708 this._fl = (this._fl + fl) | 0
13709 this._gl = (this._gl + gl) | 0
13710 this._hl = (this._hl + hl) | 0
13711
13712 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
13713 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
13714 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
13715 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
13716 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
13717 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
13718 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
13719 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
13720 }
13721
13722 Sha512.prototype._hash = function () {
13723 var H = new Buffer(64)
13724
13725 function writeInt64BE (h, l, offset) {
13726 H.writeInt32BE(h, offset)
13727 H.writeInt32BE(l, offset + 4)
13728 }
13729
13730 writeInt64BE(this._a, this._al, 0)
13731 writeInt64BE(this._b, this._bl, 8)
13732 writeInt64BE(this._c, this._cl, 16)
13733 writeInt64BE(this._d, this._dl, 24)
13734 writeInt64BE(this._e, this._el, 32)
13735 writeInt64BE(this._f, this._fl, 40)
13736 writeInt64BE(this._g, this._gl, 48)
13737 writeInt64BE(this._h, this._hl, 56)
13738
13739 return H
13740 }
13741
13742 module.exports = Sha512
13743
13744 }).call(this,require("buffer").Buffer)
13745 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
13746 (function (Buffer){
13747 'use strict';
13748 var createHash = require('create-hash/browser');
13749 var inherits = require('inherits')
13750
13751 var Transform = require('stream').Transform
13752
13753 var ZEROS = new Buffer(128)
13754 ZEROS.fill(0)
13755
13756 function Hmac(alg, key) {
13757 Transform.call(this)
13758
13759 if (typeof key === 'string') {
13760 key = new Buffer(key)
13761 }
13762
13763 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
13764
13765 this._alg = alg
13766 this._key = key
13767
13768 if (key.length > blocksize) {
13769 key = createHash(alg).update(key).digest()
13770
13771 } else if (key.length < blocksize) {
13772 key = Buffer.concat([key, ZEROS], blocksize)
13773 }
13774
13775 var ipad = this._ipad = new Buffer(blocksize)
13776 var opad = this._opad = new Buffer(blocksize)
13777
13778 for (var i = 0; i < blocksize; i++) {
13779 ipad[i] = key[i] ^ 0x36
13780 opad[i] = key[i] ^ 0x5C
13781 }
13782
13783 this._hash = createHash(alg).update(ipad)
13784 }
13785
13786 inherits(Hmac, Transform)
13787
13788 Hmac.prototype.update = function (data, enc) {
13789 this._hash.update(data, enc)
13790
13791 return this
13792 }
13793
13794 Hmac.prototype._transform = function (data, _, next) {
13795 this._hash.update(data)
13796
13797 next()
13798 }
13799
13800 Hmac.prototype._flush = function (next) {
13801 this.push(this.digest())
13802
13803 next()
13804 }
13805
13806 Hmac.prototype.digest = function (enc) {
13807 var h = this._hash.digest()
13808
13809 return createHash(this._alg).update(this._opad).update(h).digest(enc)
13810 }
13811
13812 module.exports = function createHmac(alg, key) {
13813 return new Hmac(alg, key)
13814 }
13815
13816 }).call(this,require("buffer").Buffer)
13817 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
13818 arguments[4][12][0].apply(exports,arguments)
13819 },{"dup":12}],47:[function(require,module,exports){
13820 var assert = require('assert')
13821 var BigInteger = require('bigi')
13822
13823 var Point = require('./point')
13824
13825 function Curve(p, a, b, Gx, Gy, n, h) {
13826 this.p = p
13827 this.a = a
13828 this.b = b
13829 this.G = Point.fromAffine(this, Gx, Gy)
13830 this.n = n
13831 this.h = h
13832
13833 this.infinity = new Point(this, null, null, BigInteger.ZERO)
13834
13835 // result caching
13836 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
13837 }
13838
13839 Curve.prototype.pointFromX = function(isOdd, x) {
13840 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
13841 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
13842
13843 var y = beta
13844 if (beta.isEven() ^ !isOdd) {
13845 y = this.p.subtract(y) // -y % p
13846 }
13847
13848 return Point.fromAffine(this, x, y)
13849 }
13850
13851 Curve.prototype.isInfinity = function(Q) {
13852 if (Q === this.infinity) return true
13853
13854 return Q.z.signum() === 0 && Q.y.signum() !== 0
13855 }
13856
13857 Curve.prototype.isOnCurve = function(Q) {
13858 if (this.isInfinity(Q)) return true
13859
13860 var x = Q.affineX
13861 var y = Q.affineY
13862 var a = this.a
13863 var b = this.b
13864 var p = this.p
13865
13866 // Check that xQ and yQ are integers in the interval [0, p - 1]
13867 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
13868 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
13869
13870 // and check that y^2 = x^3 + ax + b (mod p)
13871 var lhs = y.square().mod(p)
13872 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
13873 return lhs.equals(rhs)
13874 }
13875
13876 /**
13877 * Validate an elliptic curve point.
13878 *
13879 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
13880 */
13881 Curve.prototype.validate = function(Q) {
13882 // Check Q != O
13883 assert(!this.isInfinity(Q), 'Point is at infinity')
13884 assert(this.isOnCurve(Q), 'Point is not on the curve')
13885
13886 // Check nQ = O (where Q is a scalar multiple of G)
13887 var nQ = Q.multiply(this.n)
13888 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
13889
13890 return true
13891 }
13892
13893 module.exports = Curve
13894
13895 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
13896 module.exports={
13897 "secp128r1": {
13898 "p": "fffffffdffffffffffffffffffffffff",
13899 "a": "fffffffdfffffffffffffffffffffffc",
13900 "b": "e87579c11079f43dd824993c2cee5ed3",
13901 "n": "fffffffe0000000075a30d1b9038a115",
13902 "h": "01",
13903 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
13904 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
13905 },
13906 "secp160k1": {
13907 "p": "fffffffffffffffffffffffffffffffeffffac73",
13908 "a": "00",
13909 "b": "07",
13910 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
13911 "h": "01",
13912 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
13913 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
13914 },
13915 "secp160r1": {
13916 "p": "ffffffffffffffffffffffffffffffff7fffffff",
13917 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
13918 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
13919 "n": "0100000000000000000001f4c8f927aed3ca752257",
13920 "h": "01",
13921 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
13922 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
13923 },
13924 "secp192k1": {
13925 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
13926 "a": "00",
13927 "b": "03",
13928 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
13929 "h": "01",
13930 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
13931 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
13932 },
13933 "secp192r1": {
13934 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
13935 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
13936 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
13937 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
13938 "h": "01",
13939 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
13940 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
13941 },
13942 "secp256k1": {
13943 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
13944 "a": "00",
13945 "b": "07",
13946 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
13947 "h": "01",
13948 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
13949 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
13950 },
13951 "secp256r1": {
13952 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
13953 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
13954 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
13955 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
13956 "h": "01",
13957 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
13958 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
13959 }
13960 }
13961
13962 },{}],49:[function(require,module,exports){
13963 var Point = require('./point')
13964 var Curve = require('./curve')
13965
13966 var getCurveByName = require('./names')
13967
13968 module.exports = {
13969 Curve: Curve,
13970 Point: Point,
13971 getCurveByName: getCurveByName
13972 }
13973
13974 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
13975 var BigInteger = require('bigi')
13976
13977 var curves = require('./curves')
13978 var Curve = require('./curve')
13979
13980 function getCurveByName(name) {
13981 var curve = curves[name]
13982 if (!curve) return null
13983
13984 var p = new BigInteger(curve.p, 16)
13985 var a = new BigInteger(curve.a, 16)
13986 var b = new BigInteger(curve.b, 16)
13987 var n = new BigInteger(curve.n, 16)
13988 var h = new BigInteger(curve.h, 16)
13989 var Gx = new BigInteger(curve.Gx, 16)
13990 var Gy = new BigInteger(curve.Gy, 16)
13991
13992 return new Curve(p, a, b, Gx, Gy, n, h)
13993 }
13994
13995 module.exports = getCurveByName
13996
13997 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
13998 (function (Buffer){
13999 var assert = require('assert')
14000 var BigInteger = require('bigi')
14001
14002 var THREE = BigInteger.valueOf(3)
14003
14004 function Point(curve, x, y, z) {
14005 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
14006
14007 this.curve = curve
14008 this.x = x
14009 this.y = y
14010 this.z = z
14011 this._zInv = null
14012
14013 this.compressed = true
14014 }
14015
14016 Object.defineProperty(Point.prototype, 'zInv', {
14017 get: function() {
14018 if (this._zInv === null) {
14019 this._zInv = this.z.modInverse(this.curve.p)
14020 }
14021
14022 return this._zInv
14023 }
14024 })
14025
14026 Object.defineProperty(Point.prototype, 'affineX', {
14027 get: function() {
14028 return this.x.multiply(this.zInv).mod(this.curve.p)
14029 }
14030 })
14031
14032 Object.defineProperty(Point.prototype, 'affineY', {
14033 get: function() {
14034 return this.y.multiply(this.zInv).mod(this.curve.p)
14035 }
14036 })
14037
14038 Point.fromAffine = function(curve, x, y) {
14039 return new Point(curve, x, y, BigInteger.ONE)
14040 }
14041
14042 Point.prototype.equals = function(other) {
14043 if (other === this) return true
14044 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
14045 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
14046
14047 // u = Y2 * Z1 - Y1 * Z2
14048 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
14049
14050 if (u.signum() !== 0) return false
14051
14052 // v = X2 * Z1 - X1 * Z2
14053 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
14054
14055 return v.signum() === 0
14056 }
14057
14058 Point.prototype.negate = function() {
14059 var y = this.curve.p.subtract(this.y)
14060
14061 return new Point(this.curve, this.x, y, this.z)
14062 }
14063
14064 Point.prototype.add = function(b) {
14065 if (this.curve.isInfinity(this)) return b
14066 if (this.curve.isInfinity(b)) return this
14067
14068 var x1 = this.x
14069 var y1 = this.y
14070 var x2 = b.x
14071 var y2 = b.y
14072
14073 // u = Y2 * Z1 - Y1 * Z2
14074 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
14075 // v = X2 * Z1 - X1 * Z2
14076 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
14077
14078 if (v.signum() === 0) {
14079 if (u.signum() === 0) {
14080 return this.twice() // this == b, so double
14081 }
14082
14083 return this.curve.infinity // this = -b, so infinity
14084 }
14085
14086 var v2 = v.square()
14087 var v3 = v2.multiply(v)
14088 var x1v2 = x1.multiply(v2)
14089 var zu2 = u.square().multiply(this.z)
14090
14091 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
14092 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
14093 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
14094 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)
14095 // z3 = v^3 * z1 * z2
14096 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
14097
14098 return new Point(this.curve, x3, y3, z3)
14099 }
14100
14101 Point.prototype.twice = function() {
14102 if (this.curve.isInfinity(this)) return this
14103 if (this.y.signum() === 0) return this.curve.infinity
14104
14105 var x1 = this.x
14106 var y1 = this.y
14107
14108 var y1z1 = y1.multiply(this.z)
14109 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
14110 var a = this.curve.a
14111
14112 // w = 3 * x1^2 + a * z1^2
14113 var w = x1.square().multiply(THREE)
14114
14115 if (a.signum() !== 0) {
14116 w = w.add(this.z.square().multiply(a))
14117 }
14118
14119 w = w.mod(this.curve.p)
14120 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
14121 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
14122 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
14123 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
14124 // z3 = 8 * (y1 * z1)^3
14125 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
14126
14127 return new Point(this.curve, x3, y3, z3)
14128 }
14129
14130 // Simple NAF (Non-Adjacent Form) multiplication algorithm
14131 // TODO: modularize the multiplication algorithm
14132 Point.prototype.multiply = function(k) {
14133 if (this.curve.isInfinity(this)) return this
14134 if (k.signum() === 0) return this.curve.infinity
14135
14136 var e = k
14137 var h = e.multiply(THREE)
14138
14139 var neg = this.negate()
14140 var R = this
14141
14142 for (var i = h.bitLength() - 2; i > 0; --i) {
14143 R = R.twice()
14144
14145 var hBit = h.testBit(i)
14146 var eBit = e.testBit(i)
14147
14148 if (hBit != eBit) {
14149 R = R.add(hBit ? this : neg)
14150 }
14151 }
14152
14153 return R
14154 }
14155
14156 // Compute this*j + x*k (simultaneous multiplication)
14157 Point.prototype.multiplyTwo = function(j, x, k) {
14158 var i
14159
14160 if (j.bitLength() > k.bitLength())
14161 i = j.bitLength() - 1
14162 else
14163 i = k.bitLength() - 1
14164
14165 var R = this.curve.infinity
14166 var both = this.add(x)
14167
14168 while (i >= 0) {
14169 R = R.twice()
14170
14171 var jBit = j.testBit(i)
14172 var kBit = k.testBit(i)
14173
14174 if (jBit) {
14175 if (kBit) {
14176 R = R.add(both)
14177
14178 } else {
14179 R = R.add(this)
14180 }
14181
14182 } else {
14183 if (kBit) {
14184 R = R.add(x)
14185 }
14186 }
14187 --i
14188 }
14189
14190 return R
14191 }
14192
14193 Point.prototype.getEncoded = function(compressed) {
14194 if (compressed == undefined) compressed = this.compressed
14195 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
14196
14197 var x = this.affineX
14198 var y = this.affineY
14199
14200 var buffer
14201
14202 // Determine size of q in bytes
14203 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
14204
14205 // 0x02/0x03 | X
14206 if (compressed) {
14207 buffer = new Buffer(1 + byteLength)
14208 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
14209
14210 // 0x04 | X | Y
14211 } else {
14212 buffer = new Buffer(1 + byteLength + byteLength)
14213 buffer.writeUInt8(0x04, 0)
14214
14215 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
14216 }
14217
14218 x.toBuffer(byteLength).copy(buffer, 1)
14219
14220 return buffer
14221 }
14222
14223 Point.decodeFrom = function(curve, buffer) {
14224 var type = buffer.readUInt8(0)
14225 var compressed = (type !== 4)
14226
14227 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
14228 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
14229
14230 var Q
14231 if (compressed) {
14232 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
14233 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
14234
14235 var isOdd = (type === 0x03)
14236 Q = curve.pointFromX(isOdd, x)
14237
14238 } else {
14239 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
14240
14241 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
14242 Q = Point.fromAffine(curve, x, y)
14243 }
14244
14245 Q.compressed = compressed
14246 return Q
14247 }
14248
14249 Point.prototype.toString = function () {
14250 if (this.curve.isInfinity(this)) return '(INFINITY)'
14251
14252 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
14253 }
14254
14255 module.exports = Point
14256
14257 }).call(this,require("buffer").Buffer)
14258 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
14259 (function (process,global,Buffer){
14260 'use strict';
14261
14262 var crypto = global.crypto || global.msCrypto
14263 if(crypto && crypto.getRandomValues) {
14264 module.exports = randomBytes;
14265 } else {
14266 module.exports = oldBrowser;
14267 }
14268 function randomBytes(size, cb) {
14269 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
14270 /* This will not work in older browsers.
14271 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
14272 */
14273
14274 crypto.getRandomValues(bytes);
14275 if (typeof cb === 'function') {
14276 return process.nextTick(function () {
14277 cb(null, bytes);
14278 });
14279 }
14280 return bytes;
14281 }
14282 function oldBrowser() {
14283 throw new Error(
14284 'secure random number generation not supported by this browser\n'+
14285 'use chrome, FireFox or Internet Explorer 11'
14286 )
14287 }
14288
14289 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
14290 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
14291 (function (Buffer){
14292 'use strict';
14293
14294 function getFunctionName(fn) {
14295 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
14296 }
14297
14298 function getTypeTypeName(type) {
14299 if (nativeTypes.Function(type)) {
14300 type = type.toJSON ? type.toJSON() : getFunctionName(type);
14301 }
14302 if (nativeTypes.Object(type)) return JSON.stringify(type);
14303
14304 return type;
14305 }
14306
14307 function getValueTypeName(value) {
14308 if (nativeTypes.Null(value)) return '';
14309
14310 return getFunctionName(value.constructor);
14311 }
14312
14313 function tfErrorString(type, value) {
14314 var typeTypeName = getTypeTypeName(type);
14315 var valueTypeName = getValueTypeName(value);
14316
14317 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
14318 }
14319
14320 function tfPropertyErrorString(type, name, value) {
14321 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
14322 }
14323
14324 var nativeTypes = {
14325 Array: (function (_Array) {
14326 function Array(_x) {
14327 return _Array.apply(this, arguments);
14328 }
14329
14330 Array.toString = function () {
14331 return _Array.toString();
14332 };
14333
14334 return Array;
14335 })(function (value) {
14336 return value !== null && value !== undefined && value.constructor === Array;
14337 }),
14338 Boolean: function Boolean(value) {
14339 return typeof value === 'boolean';
14340 },
14341 Buffer: (function (_Buffer) {
14342 function Buffer(_x2) {
14343 return _Buffer.apply(this, arguments);
14344 }
14345
14346 Buffer.toString = function () {
14347 return _Buffer.toString();
14348 };
14349
14350 return Buffer;
14351 })(function (value) {
14352 return Buffer.isBuffer(value);
14353 }),
14354 Function: function Function(value) {
14355 return typeof value === 'function';
14356 },
14357 Null: function Null(value) {
14358 return value === undefined || value === null;
14359 },
14360 Number: function Number(value) {
14361 return typeof value === 'number';
14362 },
14363 Object: function Object(value) {
14364 return typeof value === 'object';
14365 },
14366 String: function String(value) {
14367 return typeof value === 'string';
14368 },
14369 '': function _() {
14370 return true;
14371 }
14372 };
14373
14374 function tJSON(type) {
14375 return type && type.toJSON ? type.toJSON() : type;
14376 }
14377
14378 function sJSON(type) {
14379 var json = tJSON(type);
14380 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
14381 }
14382
14383 var otherTypes = {
14384 arrayOf: function arrayOf(type) {
14385 function arrayOf(value, strict) {
14386 try {
14387 return nativeTypes.Array(value) && value.every(function (x) {
14388 return typeforce(type, x, strict);
14389 });
14390 } catch (e) {
14391 return false;
14392 }
14393 }
14394 arrayOf.toJSON = function () {
14395 return [tJSON(type)];
14396 };
14397
14398 return arrayOf;
14399 },
14400
14401 maybe: function maybe(type) {
14402 function maybe(value, strict) {
14403 return nativeTypes.Null(value) || typeforce(type, value, strict);
14404 }
14405 maybe.toJSON = function () {
14406 return '?' + sJSON(type);
14407 };
14408
14409 return maybe;
14410 },
14411
14412 object: function object(type) {
14413 function object(value, strict) {
14414 typeforce(nativeTypes.Object, value, strict);
14415
14416 var propertyName, propertyType, propertyValue;
14417
14418 try {
14419 for (propertyName in type) {
14420 propertyType = type[propertyName];
14421 propertyValue = value[propertyName];
14422
14423 typeforce(propertyType, propertyValue, strict);
14424 }
14425 } catch (e) {
14426 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
14427 }
14428
14429 if (strict) {
14430 for (propertyName in value) {
14431 if (type[propertyName]) continue;
14432
14433 throw new TypeError('Unexpected property "' + propertyName + '"');
14434 }
14435 }
14436
14437 return true;
14438 }
14439 object.toJSON = function () {
14440 return type;
14441 };
14442
14443 return object;
14444 },
14445
14446 oneOf: function oneOf() {
14447 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
14448 types[_key] = arguments[_key];
14449 }
14450
14451 function oneOf(value, strict) {
14452 return types.some(function (type) {
14453 try {
14454 return typeforce(type, value, strict);
14455 } catch (e) {
14456 return false;
14457 }
14458 });
14459 }
14460 oneOf.toJSON = function () {
14461 return types.map(sJSON).join('|');
14462 };
14463
14464 return oneOf;
14465 },
14466
14467 quacksLike: function quacksLike(type) {
14468 function quacksLike(value, strict) {
14469 return type === getValueTypeName(value);
14470 }
14471 quacksLike.toJSON = function () {
14472 return type;
14473 };
14474
14475 return quacksLike;
14476 },
14477
14478 tuple: function tuple() {
14479 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14480 types[_key2] = arguments[_key2];
14481 }
14482
14483 function tuple(value, strict) {
14484 return types.every(function (type, i) {
14485 return typeforce(type, value[i], strict);
14486 });
14487 }
14488 tuple.toJSON = function () {
14489 return '(' + types.map(sJSON).join(', ') + ')';
14490 };
14491
14492 return tuple;
14493 },
14494
14495 value: function value(expected) {
14496 function value(actual) {
14497 return actual === expected;
14498 }
14499 value.toJSON = function () {
14500 return expected;
14501 };
14502
14503 return value;
14504 }
14505 };
14506
14507 function compile(type) {
14508 if (nativeTypes.String(type)) {
14509 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
14510
14511 return nativeTypes[type] || otherTypes.quacksLike(type);
14512 } else if (type && nativeTypes.Object(type)) {
14513 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
14514
14515 var compiled = {};
14516
14517 for (var propertyName in type) {
14518 compiled[propertyName] = compile(type[propertyName]);
14519 }
14520
14521 return otherTypes.object(compiled);
14522 } else if (nativeTypes.Function(type)) {
14523 return type;
14524 }
14525
14526 return otherTypes.value(type);
14527 }
14528
14529 function typeforce(_x3, _x4, _x5) {
14530 var _again = true;
14531
14532 _function: while (_again) {
14533 var type = _x3,
14534 value = _x4,
14535 strict = _x5;
14536 _again = false;
14537
14538 if (nativeTypes.Function(type)) {
14539 if (type(value, strict)) return true;
14540
14541 throw new TypeError(tfErrorString(type, value));
14542 }
14543
14544 // JIT
14545 _x3 = compile(type);
14546 _x4 = value;
14547 _x5 = strict;
14548 _again = true;
14549 continue _function;
14550 }
14551 }
14552
14553 // assign all types to typeforce function
14554 var typeName;
14555 Object.keys(nativeTypes).forEach(function (typeName) {
14556 var nativeType = nativeTypes[typeName];
14557 nativeType.toJSON = function () {
14558 return typeName;
14559 };
14560
14561 typeforce[typeName] = nativeType;
14562 });
14563
14564 for (typeName in otherTypes) {
14565 typeforce[typeName] = otherTypes[typeName];
14566 }
14567
14568 module.exports = typeforce;
14569 module.exports.compile = compile;
14570 }).call(this,require("buffer").Buffer)
14571 },{"buffer":7}],54:[function(require,module,exports){
14572 (function (Buffer){
14573 var assert = require('assert')
14574 var base58check = require('bs58check')
14575 var typeForce = require('typeforce')
14576 var networks = require('./networks')
14577 var scripts = require('./scripts')
14578
14579 function findScriptTypeByVersion (version) {
14580 for (var networkName in networks) {
14581 var network = networks[networkName]
14582
14583 if (version === network.pubKeyHash) return 'pubkeyhash'
14584 if (version === network.scriptHash) return 'scripthash'
14585 }
14586 }
14587
14588 function Address (hash, version) {
14589 typeForce('Buffer', hash)
14590
14591 assert.strictEqual(hash.length, 20, 'Invalid hash length')
14592 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
14593
14594 this.hash = hash
14595 this.version = version
14596 }
14597
14598 Address.fromBase58Check = function (string) {
14599 var payload = base58check.decode(string)
14600 var version = payload.readUInt8(0)
14601 var hash = payload.slice(1)
14602
14603 return new Address(hash, version)
14604 }
14605
14606 Address.fromOutputScript = function (script, network) {
14607 network = network || networks.bitcoin
14608
14609 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
14610 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
14611
14612 assert(false, script.toASM() + ' has no matching Address')
14613 }
14614
14615 Address.prototype.toBase58Check = function () {
14616 var payload = new Buffer(21)
14617 payload.writeUInt8(this.version, 0)
14618 this.hash.copy(payload, 1)
14619
14620 return base58check.encode(payload)
14621 }
14622
14623 Address.prototype.toOutputScript = function () {
14624 var scriptType = findScriptTypeByVersion(this.version)
14625
14626 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
14627 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
14628
14629 assert(false, this.toString() + ' has no matching Script')
14630 }
14631
14632 Address.prototype.toString = Address.prototype.toBase58Check
14633
14634 module.exports = Address
14635
14636 }).call(this,require("buffer").Buffer)
14637 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
14638 var bs58check = require('bs58check')
14639
14640 function decode () {
14641 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
14642
14643 return bs58check.decode.apply(undefined, arguments)
14644 }
14645
14646 function encode () {
14647 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
14648
14649 return bs58check.encode.apply(undefined, arguments)
14650 }
14651
14652 module.exports = {
14653 decode: decode,
14654 encode: encode
14655 }
14656
14657 },{"bs58check":31}],56:[function(require,module,exports){
14658 (function (Buffer){
14659 var assert = require('assert')
14660 var bufferutils = require('./bufferutils')
14661 var crypto = require('./crypto')
14662
14663 var Transaction = require('./transaction')
14664
14665 function Block () {
14666 this.version = 1
14667 this.prevHash = null
14668 this.merkleRoot = null
14669 this.timestamp = 0
14670 this.bits = 0
14671 this.nonce = 0
14672 }
14673
14674 Block.fromBuffer = function (buffer) {
14675 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
14676
14677 var offset = 0
14678 function readSlice (n) {
14679 offset += n
14680 return buffer.slice(offset - n, offset)
14681 }
14682
14683 function readUInt32 () {
14684 var i = buffer.readUInt32LE(offset)
14685 offset += 4
14686 return i
14687 }
14688
14689 var block = new Block()
14690 block.version = readUInt32()
14691 block.prevHash = readSlice(32)
14692 block.merkleRoot = readSlice(32)
14693 block.timestamp = readUInt32()
14694 block.bits = readUInt32()
14695 block.nonce = readUInt32()
14696
14697 if (buffer.length === 80) return block
14698
14699 function readVarInt () {
14700 var vi = bufferutils.readVarInt(buffer, offset)
14701 offset += vi.size
14702 return vi.number
14703 }
14704
14705 // FIXME: poor performance
14706 function readTransaction () {
14707 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
14708
14709 offset += tx.toBuffer().length
14710 return tx
14711 }
14712
14713 var nTransactions = readVarInt()
14714 block.transactions = []
14715
14716 for (var i = 0; i < nTransactions; ++i) {
14717 var tx = readTransaction()
14718 block.transactions.push(tx)
14719 }
14720
14721 return block
14722 }
14723
14724 Block.fromHex = function (hex) {
14725 return Block.fromBuffer(new Buffer(hex, 'hex'))
14726 }
14727
14728 Block.prototype.getHash = function () {
14729 return crypto.hash256(this.toBuffer(true))
14730 }
14731
14732 Block.prototype.getId = function () {
14733 return bufferutils.reverse(this.getHash()).toString('hex')
14734 }
14735
14736 Block.prototype.getUTCDate = function () {
14737 var date = new Date(0) // epoch
14738 date.setUTCSeconds(this.timestamp)
14739
14740 return date
14741 }
14742
14743 Block.prototype.toBuffer = function (headersOnly) {
14744 var buffer = new Buffer(80)
14745
14746 var offset = 0
14747 function writeSlice (slice) {
14748 slice.copy(buffer, offset)
14749 offset += slice.length
14750 }
14751
14752 function writeUInt32 (i) {
14753 buffer.writeUInt32LE(i, offset)
14754 offset += 4
14755 }
14756
14757 writeUInt32(this.version)
14758 writeSlice(this.prevHash)
14759 writeSlice(this.merkleRoot)
14760 writeUInt32(this.timestamp)
14761 writeUInt32(this.bits)
14762 writeUInt32(this.nonce)
14763
14764 if (headersOnly || !this.transactions) return buffer
14765
14766 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
14767 var txBuffers = this.transactions.map(function (tx) {
14768 return tx.toBuffer()
14769 })
14770
14771 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
14772 }
14773
14774 Block.prototype.toHex = function (headersOnly) {
14775 return this.toBuffer(headersOnly).toString('hex')
14776 }
14777
14778 module.exports = Block
14779
14780 }).call(this,require("buffer").Buffer)
14781 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
14782 (function (Buffer){
14783 var assert = require('assert')
14784 var opcodes = require('./opcodes')
14785
14786 // https://github.com/feross/buffer/blob/master/index.js#L1127
14787 function verifuint (value, max) {
14788 assert(typeof value === 'number', 'cannot write a non-number as a number')
14789 assert(value >= 0, 'specified a negative value for writing an unsigned value')
14790 assert(value <= max, 'value is larger than maximum value for type')
14791 assert(Math.floor(value) === value, 'value has a fractional component')
14792 }
14793
14794 function pushDataSize (i) {
14795 return i < opcodes.OP_PUSHDATA1 ? 1
14796 : i < 0xff ? 2
14797 : i < 0xffff ? 3
14798 : 5
14799 }
14800
14801 function readPushDataInt (buffer, offset) {
14802 var opcode = buffer.readUInt8(offset)
14803 var number, size
14804
14805 // ~6 bit
14806 if (opcode < opcodes.OP_PUSHDATA1) {
14807 number = opcode
14808 size = 1
14809
14810 // 8 bit
14811 } else if (opcode === opcodes.OP_PUSHDATA1) {
14812 if (offset + 2 > buffer.length) return null
14813 number = buffer.readUInt8(offset + 1)
14814 size = 2
14815
14816 // 16 bit
14817 } else if (opcode === opcodes.OP_PUSHDATA2) {
14818 if (offset + 3 > buffer.length) return null
14819 number = buffer.readUInt16LE(offset + 1)
14820 size = 3
14821
14822 // 32 bit
14823 } else {
14824 if (offset + 5 > buffer.length) return null
14825 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
14826
14827 number = buffer.readUInt32LE(offset + 1)
14828 size = 5
14829 }
14830
14831 return {
14832 opcode: opcode,
14833 number: number,
14834 size: size
14835 }
14836 }
14837
14838 function readUInt64LE (buffer, offset) {
14839 var a = buffer.readUInt32LE(offset)
14840 var b = buffer.readUInt32LE(offset + 4)
14841 b *= 0x100000000
14842
14843 verifuint(b + a, 0x001fffffffffffff)
14844
14845 return b + a
14846 }
14847
14848 function readVarInt (buffer, offset) {
14849 var t = buffer.readUInt8(offset)
14850 var number, size
14851
14852 // 8 bit
14853 if (t < 253) {
14854 number = t
14855 size = 1
14856
14857 // 16 bit
14858 } else if (t < 254) {
14859 number = buffer.readUInt16LE(offset + 1)
14860 size = 3
14861
14862 // 32 bit
14863 } else if (t < 255) {
14864 number = buffer.readUInt32LE(offset + 1)
14865 size = 5
14866
14867 // 64 bit
14868 } else {
14869 number = readUInt64LE(buffer, offset + 1)
14870 size = 9
14871 }
14872
14873 return {
14874 number: number,
14875 size: size
14876 }
14877 }
14878
14879 function writePushDataInt (buffer, number, offset) {
14880 var size = pushDataSize(number)
14881
14882 // ~6 bit
14883 if (size === 1) {
14884 buffer.writeUInt8(number, offset)
14885
14886 // 8 bit
14887 } else if (size === 2) {
14888 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
14889 buffer.writeUInt8(number, offset + 1)
14890
14891 // 16 bit
14892 } else if (size === 3) {
14893 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
14894 buffer.writeUInt16LE(number, offset + 1)
14895
14896 // 32 bit
14897 } else {
14898 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
14899 buffer.writeUInt32LE(number, offset + 1)
14900 }
14901
14902 return size
14903 }
14904
14905 function writeUInt64LE (buffer, value, offset) {
14906 verifuint(value, 0x001fffffffffffff)
14907
14908 buffer.writeInt32LE(value & -1, offset)
14909 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
14910 }
14911
14912 function varIntSize (i) {
14913 return i < 253 ? 1
14914 : i < 0x10000 ? 3
14915 : i < 0x100000000 ? 5
14916 : 9
14917 }
14918
14919 function writeVarInt (buffer, number, offset) {
14920 var size = varIntSize(number)
14921
14922 // 8 bit
14923 if (size === 1) {
14924 buffer.writeUInt8(number, offset)
14925
14926 // 16 bit
14927 } else if (size === 3) {
14928 buffer.writeUInt8(253, offset)
14929 buffer.writeUInt16LE(number, offset + 1)
14930
14931 // 32 bit
14932 } else if (size === 5) {
14933 buffer.writeUInt8(254, offset)
14934 buffer.writeUInt32LE(number, offset + 1)
14935
14936 // 64 bit
14937 } else {
14938 buffer.writeUInt8(255, offset)
14939 writeUInt64LE(buffer, number, offset + 1)
14940 }
14941
14942 return size
14943 }
14944
14945 function varIntBuffer (i) {
14946 var size = varIntSize(i)
14947 var buffer = new Buffer(size)
14948 writeVarInt(buffer, i, 0)
14949
14950 return buffer
14951 }
14952
14953 function reverse (buffer) {
14954 var buffer2 = new Buffer(buffer)
14955 Array.prototype.reverse.call(buffer2)
14956 return buffer2
14957 }
14958
14959 module.exports = {
14960 pushDataSize: pushDataSize,
14961 readPushDataInt: readPushDataInt,
14962 readUInt64LE: readUInt64LE,
14963 readVarInt: readVarInt,
14964 reverse: reverse,
14965 varIntBuffer: varIntBuffer,
14966 varIntSize: varIntSize,
14967 writePushDataInt: writePushDataInt,
14968 writeUInt64LE: writeUInt64LE,
14969 writeVarInt: writeVarInt
14970 }
14971
14972 }).call(this,require("buffer").Buffer)
14973 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
14974 var createHash = require('create-hash')
14975
14976 function hash160 (buffer) {
14977 return ripemd160(sha256(buffer))
14978 }
14979
14980 function hash256 (buffer) {
14981 return sha256(sha256(buffer))
14982 }
14983
14984 function ripemd160 (buffer) {
14985 return createHash('rmd160').update(buffer).digest()
14986 }
14987
14988 function sha1 (buffer) {
14989 return createHash('sha1').update(buffer).digest()
14990 }
14991
14992 function sha256 (buffer) {
14993 return createHash('sha256').update(buffer).digest()
14994 }
14995
14996 // FIXME: Name not consistent with others
14997 var createHmac = require('create-hmac')
14998
14999 function HmacSHA256 (buffer, secret) {
15000 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
15001 return createHmac('sha256', secret).update(buffer).digest()
15002 }
15003
15004 function HmacSHA512 (buffer, secret) {
15005 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
15006 return createHmac('sha512', secret).update(buffer).digest()
15007 }
15008
15009 module.exports = {
15010 ripemd160: ripemd160,
15011 sha1: sha1,
15012 sha256: sha256,
15013 hash160: hash160,
15014 hash256: hash256,
15015 HmacSHA256: HmacSHA256,
15016 HmacSHA512: HmacSHA512
15017 }
15018
15019 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
15020 (function (Buffer){
15021 var assert = require('assert')
15022 var createHmac = require('create-hmac')
15023 var typeForce = require('typeforce')
15024
15025 var BigInteger = require('bigi')
15026 var ECSignature = require('./ecsignature')
15027
15028 var ZERO = new Buffer([0])
15029 var ONE = new Buffer([1])
15030
15031 // https://tools.ietf.org/html/rfc6979#section-3.2
15032 function deterministicGenerateK (curve, hash, d, checkSig) {
15033 typeForce('Buffer', hash)
15034 typeForce('BigInteger', d)
15035
15036 // FIXME: remove/uncomment for 2.0.0
15037 // typeForce('Function', checkSig)
15038
15039 if (typeof checkSig !== 'function') {
15040 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
15041
15042 checkSig = function (k) {
15043 var G = curve.G
15044 var n = curve.n
15045 var e = BigInteger.fromBuffer(hash)
15046
15047 var Q = G.multiply(k)
15048
15049 if (curve.isInfinity(Q))
15050 return false
15051
15052 var r = Q.affineX.mod(n)
15053 if (r.signum() === 0)
15054 return false
15055
15056 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
15057 if (s.signum() === 0)
15058 return false
15059
15060 return true
15061 }
15062 }
15063
15064 // sanity check
15065 assert.equal(hash.length, 32, 'Hash must be 256 bit')
15066
15067 var x = d.toBuffer(32)
15068 var k = new Buffer(32)
15069 var v = new Buffer(32)
15070
15071 // Step A, ignored as hash already provided
15072 // Step B
15073 v.fill(1)
15074
15075 // Step C
15076 k.fill(0)
15077
15078 // Step D
15079 k = createHmac('sha256', k)
15080 .update(v)
15081 .update(ZERO)
15082 .update(x)
15083 .update(hash)
15084 .digest()
15085
15086 // Step E
15087 v = createHmac('sha256', k).update(v).digest()
15088
15089 // Step F
15090 k = createHmac('sha256', k)
15091 .update(v)
15092 .update(ONE)
15093 .update(x)
15094 .update(hash)
15095 .digest()
15096
15097 // Step G
15098 v = createHmac('sha256', k).update(v).digest()
15099
15100 // Step H1/H2a, ignored as tlen === qlen (256 bit)
15101 // Step H2b
15102 v = createHmac('sha256', k).update(v).digest()
15103
15104 var T = BigInteger.fromBuffer(v)
15105
15106 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
15107 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
15108 k = createHmac('sha256', k)
15109 .update(v)
15110 .update(ZERO)
15111 .digest()
15112
15113 v = createHmac('sha256', k).update(v).digest()
15114
15115 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
15116 // Step H2b again
15117 v = createHmac('sha256', k).update(v).digest()
15118 T = BigInteger.fromBuffer(v)
15119 }
15120
15121 return T
15122 }
15123
15124 function sign (curve, hash, d) {
15125 var r, s
15126
15127 var e = BigInteger.fromBuffer(hash)
15128 var n = curve.n
15129 var G = curve.G
15130
15131 deterministicGenerateK(curve, hash, d, function (k) {
15132 var Q = G.multiply(k)
15133
15134 if (curve.isInfinity(Q))
15135 return false
15136
15137 r = Q.affineX.mod(n)
15138 if (r.signum() === 0)
15139 return false
15140
15141 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
15142 if (s.signum() === 0)
15143 return false
15144
15145 return true
15146 })
15147
15148 var N_OVER_TWO = n.shiftRight(1)
15149
15150 // enforce low S values, see bip62: 'low s values in signatures'
15151 if (s.compareTo(N_OVER_TWO) > 0) {
15152 s = n.subtract(s)
15153 }
15154
15155 return new ECSignature(r, s)
15156 }
15157
15158 function verifyRaw (curve, e, signature, Q) {
15159 var n = curve.n
15160 var G = curve.G
15161
15162 var r = signature.r
15163 var s = signature.s
15164
15165 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
15166 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
15167 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
15168
15169 // c = s^-1 mod n
15170 var c = s.modInverse(n)
15171
15172 // 1.4.4 Compute u1 = es^−1 mod n
15173 // u2 = rs^−1 mod n
15174 var u1 = e.multiply(c).mod(n)
15175 var u2 = r.multiply(c).mod(n)
15176
15177 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
15178 var R = G.multiplyTwo(u1, Q, u2)
15179 var v = R.affineX.mod(n)
15180
15181 // 1.4.5 (cont.) Enforce R is not at infinity
15182 if (curve.isInfinity(R)) return false
15183
15184 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
15185 return v.equals(r)
15186 }
15187
15188 function verify (curve, hash, signature, Q) {
15189 // 1.4.2 H = Hash(M), already done by the user
15190 // 1.4.3 e = H
15191 var e = BigInteger.fromBuffer(hash)
15192
15193 return verifyRaw(curve, e, signature, Q)
15194 }
15195
15196 /**
15197 * Recover a public key from a signature.
15198 *
15199 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
15200 * Key Recovery Operation".
15201 *
15202 * http://www.secg.org/download/aid-780/sec1-v2.pdf
15203 */
15204 function recoverPubKey (curve, e, signature, i) {
15205 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
15206
15207 var n = curve.n
15208 var G = curve.G
15209
15210 var r = signature.r
15211 var s = signature.s
15212
15213 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
15214 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
15215
15216 // A set LSB signifies that the y-coordinate is odd
15217 var isYOdd = i & 1
15218
15219 // The more significant bit specifies whether we should use the
15220 // first or second candidate key.
15221 var isSecondKey = i >> 1
15222
15223 // 1.1 Let x = r + jn
15224 var x = isSecondKey ? r.add(n) : r
15225 var R = curve.pointFromX(isYOdd, x)
15226
15227 // 1.4 Check that nR is at infinity
15228 var nR = R.multiply(n)
15229 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
15230
15231 // Compute -e from e
15232 var eNeg = e.negate().mod(n)
15233
15234 // 1.6.1 Compute Q = r^-1 (sR - eG)
15235 // Q = r^-1 (sR + -eG)
15236 var rInv = r.modInverse(n)
15237
15238 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
15239 curve.validate(Q)
15240
15241 return Q
15242 }
15243
15244 /**
15245 * Calculate pubkey extraction parameter.
15246 *
15247 * When extracting a pubkey from a signature, we have to
15248 * distinguish four different cases. Rather than putting this
15249 * burden on the verifier, Bitcoin includes a 2-bit value with the
15250 * signature.
15251 *
15252 * This function simply tries all four cases and returns the value
15253 * that resulted in a successful pubkey recovery.
15254 */
15255 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
15256 for (var i = 0; i < 4; i++) {
15257 var Qprime = recoverPubKey(curve, e, signature, i)
15258
15259 // 1.6.2 Verify Q
15260 if (Qprime.equals(Q)) {
15261 return i
15262 }
15263 }
15264
15265 throw new Error('Unable to find valid recovery factor')
15266 }
15267
15268 module.exports = {
15269 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
15270 deterministicGenerateK: deterministicGenerateK,
15271 recoverPubKey: recoverPubKey,
15272 sign: sign,
15273 verify: verify,
15274 verifyRaw: verifyRaw
15275 }
15276
15277 }).call(this,require("buffer").Buffer)
15278 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
15279 (function (Buffer){
15280 var assert = require('assert')
15281 var base58check = require('bs58check')
15282 var ecdsa = require('./ecdsa')
15283 var networks = require('./networks')
15284 var randomBytes = require('randombytes')
15285 var typeForce = require('typeforce')
15286
15287 var BigInteger = require('bigi')
15288 var ECPubKey = require('./ecpubkey')
15289
15290 var ecurve = require('ecurve')
15291 var secp256k1 = ecurve.getCurveByName('secp256k1')
15292
15293 function ECKey (d, compressed) {
15294 assert(d.signum() > 0, 'Private key must be greater than 0')
15295 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
15296
15297 var Q = ECKey.curve.G.multiply(d)
15298
15299 this.d = d
15300 this.pub = new ECPubKey(Q, compressed)
15301 }
15302
15303 // Constants
15304 ECKey.curve = secp256k1
15305
15306 // Static constructors
15307 ECKey.fromWIF = function (string) {
15308 var payload = base58check.decode(string)
15309 var compressed = false
15310
15311 // Ignore the version byte
15312 payload = payload.slice(1)
15313
15314 if (payload.length === 33) {
15315 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
15316
15317 // Truncate the compression flag
15318 payload = payload.slice(0, -1)
15319 compressed = true
15320 }
15321
15322 assert.equal(payload.length, 32, 'Invalid WIF payload length')
15323
15324 var d = BigInteger.fromBuffer(payload)
15325 return new ECKey(d, compressed)
15326 }
15327
15328 ECKey.makeRandom = function (compressed, rng) {
15329 rng = rng || randomBytes
15330
15331 var buffer = rng(32)
15332 typeForce('Buffer', buffer)
15333 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
15334
15335 var d = BigInteger.fromBuffer(buffer)
15336 d = d.mod(ECKey.curve.n)
15337
15338 return new ECKey(d, compressed)
15339 }
15340
15341 // Export functions
15342 ECKey.prototype.toWIF = function (network) {
15343 network = network || networks.bitcoin
15344
15345 var bufferLen = this.pub.compressed ? 34 : 33
15346 var buffer = new Buffer(bufferLen)
15347
15348 buffer.writeUInt8(network.wif, 0)
15349 this.d.toBuffer(32).copy(buffer, 1)
15350
15351 if (this.pub.compressed) {
15352 buffer.writeUInt8(0x01, 33)
15353 }
15354
15355 return base58check.encode(buffer)
15356 }
15357
15358 // Operations
15359 ECKey.prototype.sign = function (hash) {
15360 return ecdsa.sign(ECKey.curve, hash, this.d)
15361 }
15362
15363 module.exports = ECKey
15364
15365 }).call(this,require("buffer").Buffer)
15366 },{"./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){
15367 (function (Buffer){
15368 var crypto = require('./crypto')
15369 var ecdsa = require('./ecdsa')
15370 var typeForce = require('typeforce')
15371 var networks = require('./networks')
15372
15373 var Address = require('./address')
15374
15375 var ecurve = require('ecurve')
15376 var secp256k1 = ecurve.getCurveByName('secp256k1')
15377
15378 function ECPubKey (Q, compressed) {
15379 if (compressed === undefined) {
15380 compressed = true
15381 }
15382
15383 typeForce('Point', Q)
15384 typeForce('Boolean', compressed)
15385
15386 this.compressed = compressed
15387 this.Q = Q
15388 }
15389
15390 // Constants
15391 ECPubKey.curve = secp256k1
15392
15393 // Static constructors
15394 ECPubKey.fromBuffer = function (buffer) {
15395 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
15396 return new ECPubKey(Q, Q.compressed)
15397 }
15398
15399 ECPubKey.fromHex = function (hex) {
15400 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
15401 }
15402
15403 // Operations
15404 ECPubKey.prototype.getAddress = function (network) {
15405 network = network || networks.bitcoin
15406
15407 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
15408 }
15409
15410 ECPubKey.prototype.verify = function (hash, signature) {
15411 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
15412 }
15413
15414 // Export functions
15415 ECPubKey.prototype.toBuffer = function () {
15416 return this.Q.getEncoded(this.compressed)
15417 }
15418
15419 ECPubKey.prototype.toHex = function () {
15420 return this.toBuffer().toString('hex')
15421 }
15422
15423 module.exports = ECPubKey
15424
15425 }).call(this,require("buffer").Buffer)
15426 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
15427 (function (Buffer){
15428 var assert = require('assert')
15429 var typeForce = require('typeforce')
15430
15431 var BigInteger = require('bigi')
15432
15433 function ECSignature (r, s) {
15434 typeForce('BigInteger', r)
15435 typeForce('BigInteger', s)
15436
15437 this.r = r
15438 this.s = s
15439 }
15440
15441 ECSignature.parseCompact = function (buffer) {
15442 assert.equal(buffer.length, 65, 'Invalid signature length')
15443 var i = buffer.readUInt8(0) - 27
15444
15445 // At most 3 bits
15446 assert.equal(i, i & 7, 'Invalid signature parameter')
15447 var compressed = !!(i & 4)
15448
15449 // Recovery param only
15450 i = i & 3
15451
15452 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
15453 var s = BigInteger.fromBuffer(buffer.slice(33))
15454
15455 return {
15456 compressed: compressed,
15457 i: i,
15458 signature: new ECSignature(r, s)
15459 }
15460 }
15461
15462 ECSignature.fromDER = function (buffer) {
15463 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
15464 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
15465 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
15466
15467 var rLen = buffer.readUInt8(3)
15468 assert(rLen > 0, 'R length is zero')
15469
15470 var offset = 4 + rLen
15471 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
15472
15473 var sLen = buffer.readUInt8(offset + 1)
15474 assert(sLen > 0, 'S length is zero')
15475
15476 var rB = buffer.slice(4, offset)
15477 var sB = buffer.slice(offset + 2)
15478 offset += 2 + sLen
15479
15480 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
15481 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
15482 }
15483
15484 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
15485 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
15486 }
15487
15488 assert.equal(offset, buffer.length, 'Invalid DER encoding')
15489 var r = BigInteger.fromDERInteger(rB)
15490 var s = BigInteger.fromDERInteger(sB)
15491
15492 assert(r.signum() >= 0, 'R value is negative')
15493 assert(s.signum() >= 0, 'S value is negative')
15494
15495 return new ECSignature(r, s)
15496 }
15497
15498 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
15499 ECSignature.parseScriptSignature = function (buffer) {
15500 var hashType = buffer.readUInt8(buffer.length - 1)
15501 var hashTypeMod = hashType & ~0x80
15502
15503 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
15504
15505 return {
15506 signature: ECSignature.fromDER(buffer.slice(0, -1)),
15507 hashType: hashType
15508 }
15509 }
15510
15511 ECSignature.prototype.toCompact = function (i, compressed) {
15512 if (compressed) {
15513 i += 4
15514 }
15515
15516 i += 27
15517
15518 var buffer = new Buffer(65)
15519 buffer.writeUInt8(i, 0)
15520
15521 this.r.toBuffer(32).copy(buffer, 1)
15522 this.s.toBuffer(32).copy(buffer, 33)
15523
15524 return buffer
15525 }
15526
15527 ECSignature.prototype.toDER = function () {
15528 var rBa = this.r.toDERInteger()
15529 var sBa = this.s.toDERInteger()
15530
15531 var sequence = []
15532
15533 // INTEGER
15534 sequence.push(0x02, rBa.length)
15535 sequence = sequence.concat(rBa)
15536
15537 // INTEGER
15538 sequence.push(0x02, sBa.length)
15539 sequence = sequence.concat(sBa)
15540
15541 // SEQUENCE
15542 sequence.unshift(0x30, sequence.length)
15543
15544 return new Buffer(sequence)
15545 }
15546
15547 ECSignature.prototype.toScriptSignature = function (hashType) {
15548 var hashTypeMod = hashType & ~0x80
15549 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
15550
15551 var hashTypeBuffer = new Buffer(1)
15552 hashTypeBuffer.writeUInt8(hashType, 0)
15553
15554 return Buffer.concat([this.toDER(), hashTypeBuffer])
15555 }
15556
15557 module.exports = ECSignature
15558
15559 }).call(this,require("buffer").Buffer)
15560 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
15561 (function (Buffer){
15562 var assert = require('assert')
15563 var base58check = require('bs58check')
15564 var bcrypto = require('./crypto')
15565 var createHmac = require('create-hmac')
15566 var typeForce = require('typeforce')
15567 var networks = require('./networks')
15568
15569 var BigInteger = require('bigi')
15570 var ECKey = require('./eckey')
15571 var ECPubKey = require('./ecpubkey')
15572
15573 var ecurve = require('ecurve')
15574 var curve = ecurve.getCurveByName('secp256k1')
15575
15576 function findBIP32NetworkByVersion (version) {
15577 for (var name in networks) {
15578 var network = networks[name]
15579
15580 if (version === network.bip32.private || version === network.bip32.public) {
15581 return network
15582 }
15583 }
15584
15585 assert(false, 'Could not find network for ' + version.toString(16))
15586 }
15587
15588 function HDNode (K, chainCode, network) {
15589 network = network || networks.bitcoin
15590
15591 typeForce('Buffer', chainCode)
15592
15593 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
15594 assert(network.bip32, 'Unknown BIP32 constants for network')
15595
15596 this.chainCode = chainCode
15597 this.depth = 0
15598 this.index = 0
15599 this.parentFingerprint = 0x00000000
15600 this.network = network
15601
15602 if (K instanceof BigInteger) {
15603 this.privKey = new ECKey(K, true)
15604 this.pubKey = this.privKey.pub
15605 } else if (K instanceof ECKey) {
15606 assert(K.pub.compressed, 'ECKey must be compressed')
15607 this.privKey = K
15608 this.pubKey = K.pub
15609 } else if (K instanceof ECPubKey) {
15610 assert(K.compressed, 'ECPubKey must be compressed')
15611 this.pubKey = K
15612 } else {
15613 this.pubKey = new ECPubKey(K, true)
15614 }
15615 }
15616
15617 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
15618 HDNode.HIGHEST_BIT = 0x80000000
15619 HDNode.LENGTH = 78
15620
15621 HDNode.fromSeedBuffer = function (seed, network) {
15622 typeForce('Buffer', seed)
15623
15624 assert(seed.length >= 16, 'Seed should be at least 128 bits')
15625 assert(seed.length <= 64, 'Seed should be at most 512 bits')
15626
15627 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
15628 var IL = I.slice(0, 32)
15629 var IR = I.slice(32)
15630
15631 // In case IL is 0 or >= n, the master key is invalid
15632 // This is handled by `new ECKey` in the HDNode constructor
15633 var pIL = BigInteger.fromBuffer(IL)
15634
15635 return new HDNode(pIL, IR, network)
15636 }
15637
15638 HDNode.fromSeedHex = function (hex, network) {
15639 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
15640 }
15641
15642 HDNode.fromBase58 = function (string, network) {
15643 return HDNode.fromBuffer(base58check.decode(string), network, true)
15644 }
15645
15646 // FIXME: remove in 2.x.y
15647 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
15648 if (!__ignoreDeprecation) {
15649 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
15650 }
15651
15652 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
15653
15654 // 4 byte: version bytes
15655 var version = buffer.readUInt32BE(0)
15656
15657 if (network) {
15658 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
15659
15660 // auto-detect
15661 } else {
15662 network = findBIP32NetworkByVersion(version)
15663 }
15664
15665 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
15666 var depth = buffer.readUInt8(4)
15667
15668 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
15669 var parentFingerprint = buffer.readUInt32BE(5)
15670 if (depth === 0) {
15671 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
15672 }
15673
15674 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
15675 // This is encoded in MSB order. (0x00000000 if master key)
15676 var index = buffer.readUInt32BE(9)
15677 assert(depth > 0 || index === 0, 'Invalid index')
15678
15679 // 32 bytes: the chain code
15680 var chainCode = buffer.slice(13, 45)
15681 var data, hd
15682
15683 // 33 bytes: private key data (0x00 + k)
15684 if (version === network.bip32.private) {
15685 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
15686 data = buffer.slice(46, 78)
15687 var d = BigInteger.fromBuffer(data)
15688 hd = new HDNode(d, chainCode, network)
15689
15690 // 33 bytes: public key data (0x02 + X or 0x03 + X)
15691 } else {
15692 data = buffer.slice(45, 78)
15693 var Q = ecurve.Point.decodeFrom(curve, data)
15694 assert.equal(Q.compressed, true, 'Invalid public key')
15695
15696 // Verify that the X coordinate in the public point corresponds to a point on the curve.
15697 // If not, the extended public key is invalid.
15698 curve.validate(Q)
15699
15700 hd = new HDNode(Q, chainCode, network)
15701 }
15702
15703 hd.depth = depth
15704 hd.index = index
15705 hd.parentFingerprint = parentFingerprint
15706
15707 return hd
15708 }
15709
15710 // FIXME: remove in 2.x.y
15711 HDNode.fromHex = function (hex, network) {
15712 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
15713 }
15714
15715 HDNode.prototype.getIdentifier = function () {
15716 return bcrypto.hash160(this.pubKey.toBuffer())
15717 }
15718
15719 HDNode.prototype.getFingerprint = function () {
15720 return this.getIdentifier().slice(0, 4)
15721 }
15722
15723 HDNode.prototype.getAddress = function () {
15724 return this.pubKey.getAddress(this.network)
15725 }
15726
15727 HDNode.prototype.neutered = function () {
15728 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
15729 neutered.depth = this.depth
15730 neutered.index = this.index
15731 neutered.parentFingerprint = this.parentFingerprint
15732
15733 return neutered
15734 }
15735
15736 HDNode.prototype.toBase58 = function (isPrivate) {
15737 return base58check.encode(this.toBuffer(isPrivate, true))
15738 }
15739
15740 // FIXME: remove in 2.x.y
15741 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
15742 if (isPrivate === undefined) {
15743 isPrivate = !!this.privKey
15744
15745 // FIXME: remove in 2.x.y
15746 } else {
15747 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
15748 }
15749
15750 if (!__ignoreDeprecation) {
15751 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
15752 }
15753
15754 // Version
15755 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
15756 var buffer = new Buffer(HDNode.LENGTH)
15757
15758 // 4 bytes: version bytes
15759 buffer.writeUInt32BE(version, 0)
15760
15761 // Depth
15762 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
15763 buffer.writeUInt8(this.depth, 4)
15764
15765 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
15766 buffer.writeUInt32BE(this.parentFingerprint, 5)
15767
15768 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
15769 // This is encoded in Big endian. (0x00000000 if master key)
15770 buffer.writeUInt32BE(this.index, 9)
15771
15772 // 32 bytes: the chain code
15773 this.chainCode.copy(buffer, 13)
15774
15775 // 33 bytes: the public key or private key data
15776 if (isPrivate) {
15777 // FIXME: remove in 2.x.y
15778 assert(this.privKey, 'Missing private key')
15779
15780 // 0x00 + k for private keys
15781 buffer.writeUInt8(0, 45)
15782 this.privKey.d.toBuffer(32).copy(buffer, 46)
15783 } else {
15784 // X9.62 encoding for public keys
15785 this.pubKey.toBuffer().copy(buffer, 45)
15786 }
15787
15788 return buffer
15789 }
15790
15791 // FIXME: remove in 2.x.y
15792 HDNode.prototype.toHex = function (isPrivate) {
15793 return this.toBuffer(isPrivate).toString('hex')
15794 }
15795
15796 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
15797 HDNode.prototype.derive = function (index) {
15798 var isHardened = index >= HDNode.HIGHEST_BIT
15799 var indexBuffer = new Buffer(4)
15800 indexBuffer.writeUInt32BE(index, 0)
15801
15802 var data
15803
15804 // Hardened child
15805 if (isHardened) {
15806 assert(this.privKey, 'Could not derive hardened child key')
15807
15808 // data = 0x00 || ser256(kpar) || ser32(index)
15809 data = Buffer.concat([
15810 this.privKey.d.toBuffer(33),
15811 indexBuffer
15812 ])
15813
15814 // Normal child
15815 } else {
15816 // data = serP(point(kpar)) || ser32(index)
15817 // = serP(Kpar) || ser32(index)
15818 data = Buffer.concat([
15819 this.pubKey.toBuffer(),
15820 indexBuffer
15821 ])
15822 }
15823
15824 var I = createHmac('sha512', this.chainCode).update(data).digest()
15825 var IL = I.slice(0, 32)
15826 var IR = I.slice(32)
15827
15828 var pIL = BigInteger.fromBuffer(IL)
15829
15830 // In case parse256(IL) >= n, proceed with the next value for i
15831 if (pIL.compareTo(curve.n) >= 0) {
15832 return this.derive(index + 1)
15833 }
15834
15835 // Private parent key -> private child key
15836 var hd
15837 if (this.privKey) {
15838 // ki = parse256(IL) + kpar (mod n)
15839 var ki = pIL.add(this.privKey.d).mod(curve.n)
15840
15841 // In case ki == 0, proceed with the next value for i
15842 if (ki.signum() === 0) {
15843 return this.derive(index + 1)
15844 }
15845
15846 hd = new HDNode(ki, IR, this.network)
15847
15848 // Public parent key -> public child key
15849 } else {
15850 // Ki = point(parse256(IL)) + Kpar
15851 // = G*IL + Kpar
15852 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
15853
15854 // In case Ki is the point at infinity, proceed with the next value for i
15855 if (curve.isInfinity(Ki)) {
15856 return this.derive(index + 1)
15857 }
15858
15859 hd = new HDNode(Ki, IR, this.network)
15860 }
15861
15862 hd.depth = this.depth + 1
15863 hd.index = index
15864 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
15865
15866 return hd
15867 }
15868
15869 HDNode.prototype.deriveHardened = function (index) {
15870 // Only derives hardened private keys by default
15871 return this.derive(index + HDNode.HIGHEST_BIT)
15872 }
15873
15874 HDNode.prototype.toString = HDNode.prototype.toBase58
15875
15876 module.exports = HDNode
15877
15878 }).call(this,require("buffer").Buffer)
15879 },{"./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){
15880 module.exports = {
15881 Address: require('./address'),
15882 base58check: require('./base58check'),
15883 Block: require('./block'),
15884 bufferutils: require('./bufferutils'),
15885 crypto: require('./crypto'),
15886 ecdsa: require('./ecdsa'),
15887 ECKey: require('./eckey'),
15888 ECPubKey: require('./ecpubkey'),
15889 ECSignature: require('./ecsignature'),
15890 Message: require('./message'),
15891 opcodes: require('./opcodes'),
15892 HDNode: require('./hdnode'),
15893 Script: require('./script'),
15894 scripts: require('./scripts'),
15895 Transaction: require('./transaction'),
15896 TransactionBuilder: require('./transaction_builder'),
15897 networks: require('./networks'),
15898 Wallet: require('./wallet')
15899 }
15900
15901 },{"./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){
15902 (function (Buffer){
15903 var bufferutils = require('./bufferutils')
15904 var crypto = require('./crypto')
15905 var ecdsa = require('./ecdsa')
15906 var networks = require('./networks')
15907
15908 var BigInteger = require('bigi')
15909 var ECPubKey = require('./ecpubkey')
15910 var ECSignature = require('./ecsignature')
15911
15912 var ecurve = require('ecurve')
15913 var ecparams = ecurve.getCurveByName('secp256k1')
15914
15915 function magicHash (message, network) {
15916 var magicPrefix = new Buffer(network.magicPrefix)
15917 var messageBuffer = new Buffer(message)
15918 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
15919
15920 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
15921 return crypto.hash256(buffer)
15922 }
15923
15924 function sign (privKey, message, network) {
15925 network = network || networks.bitcoin
15926
15927 var hash = magicHash(message, network)
15928 var signature = privKey.sign(hash)
15929 var e = BigInteger.fromBuffer(hash)
15930 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
15931
15932 return signature.toCompact(i, privKey.pub.compressed)
15933 }
15934
15935 // TODO: network could be implied from address
15936 function verify (address, signature, message, network) {
15937 if (!Buffer.isBuffer(signature)) {
15938 signature = new Buffer(signature, 'base64')
15939 }
15940
15941 network = network || networks.bitcoin
15942
15943 var hash = magicHash(message, network)
15944 var parsed = ECSignature.parseCompact(signature)
15945 var e = BigInteger.fromBuffer(hash)
15946 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
15947
15948 var pubKey = new ECPubKey(Q, parsed.compressed)
15949 return pubKey.getAddress(network).toString() === address.toString()
15950 }
15951
15952 module.exports = {
15953 magicHash: magicHash,
15954 sign: sign,
15955 verify: verify
15956 }
15957
15958 }).call(this,require("buffer").Buffer)
15959 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
15960 // https://en.bitcoin.it/wiki/List_of_address_prefixes
15961 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
15962
15963 var networks = {
15964 bitcoin: {
15965 magicPrefix: '\x18Bitcoin Signed Message:\n',
15966 bip32: {
15967 public: 0x0488b21e,
15968 private: 0x0488ade4
15969 },
15970 pubKeyHash: 0x00,
15971 scriptHash: 0x05,
15972 wif: 0x80,
15973 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
15974 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
15975 estimateFee: estimateFee('bitcoin')
15976 },
15977 testnet: {
15978 magicPrefix: '\x18Bitcoin Signed Message:\n',
15979 bip32: {
15980 public: 0x043587cf,
15981 private: 0x04358394
15982 },
15983 pubKeyHash: 0x6f,
15984 scriptHash: 0xc4,
15985 wif: 0xef,
15986 dustThreshold: 546,
15987 feePerKb: 10000,
15988 estimateFee: estimateFee('testnet')
15989 },
15990 litecoin: {
15991 magicPrefix: '\x19Litecoin Signed Message:\n',
15992 bip32: {
15993 public: 0x019da462,
15994 private: 0x019d9cfe
15995 },
15996 pubKeyHash: 0x30,
15997 scriptHash: 0x05,
15998 wif: 0xb0,
15999 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
16000 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
16001 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
16002 estimateFee: estimateFee('litecoin')
16003 },
16004 dogecoin: {
16005 magicPrefix: '\x19Dogecoin Signed Message:\n',
16006 bip32: {
16007 public: 0x02facafd,
16008 private: 0x02fac398
16009 },
16010 pubKeyHash: 0x1e,
16011 scriptHash: 0x16,
16012 wif: 0x9e,
16013 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
16014 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
16015 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
16016 estimateFee: estimateFee('dogecoin')
16017 },
16018 viacoin: {
16019 magicPrefix: '\x18Viacoin Signed Message:\n',
16020 bip32: {
16021 public: 0x0488b21e,
16022 private: 0x0488ade4
16023 },
16024 pubKeyHash: 0x47,
16025 scriptHash: 0x21,
16026 wif: 0xc7,
16027 dustThreshold: 560,
16028 dustSoftThreshold: 100000,
16029 feePerKb: 100000, //
16030 estimateFee: estimateFee('viacoin')
16031 },
16032 viacointestnet: {
16033 magicPrefix: '\x18Viacoin Signed Message:\n',
16034 bip32: {
16035 public: 0x043587cf,
16036 private: 0x04358394
16037 },
16038 pubKeyHash: 0x7f,
16039 scriptHash: 0xc4,
16040 wif: 0xff,
16041 dustThreshold: 560,
16042 dustSoftThreshold: 100000,
16043 feePerKb: 100000,
16044 estimateFee: estimateFee('viacointestnet')
16045 },
16046 gamerscoin: {
16047 magicPrefix: '\x19Gamerscoin Signed Message:\n',
16048 bip32: {
16049 public: 0x019da462,
16050 private: 0x019d9cfe
16051 },
16052 pubKeyHash: 0x26,
16053 scriptHash: 0x05,
16054 wif: 0xA6,
16055 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
16056 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
16057 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
16058 estimateFee: estimateFee('gamerscoin')
16059 },
16060 jumbucks: {
16061 magicPrefix: '\x19Jumbucks Signed Message:\n',
16062 bip32: {
16063 public: 0x037a689a,
16064 private: 0x037a6460
16065 },
16066 pubKeyHash: 0x2b,
16067 scriptHash: 0x05,
16068 wif: 0xab,
16069 dustThreshold: 0,
16070 dustSoftThreshold: 10000,
16071 feePerKb: 10000,
16072 estimateFee: estimateFee('jumbucks')
16073 },
16074 zetacoin: {
16075 magicPrefix: '\x18Zetacoin Signed Message:\n',
16076 bip32: {
16077 public: 0x0488b21e,
16078 private: 0x0488ade4
16079 },
16080 pubKeyHash: 0x50,
16081 scriptHash: 0x09,
16082 wif: 0xe0,
16083 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
16084 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
16085 estimateFee: estimateFee('zetacoin')
16086 }
16087 }
16088
16089 function estimateFee (type) {
16090 return function (tx) {
16091 var network = networks[type]
16092 var baseFee = network.feePerKb
16093 var byteSize = tx.toBuffer().length
16094
16095 var fee = baseFee * Math.ceil(byteSize / 1000)
16096 if (network.dustSoftThreshold === undefined) return fee
16097
16098 tx.outs.forEach(function (e) {
16099 if (e.value < network.dustSoftThreshold) {
16100 fee += baseFee
16101 }
16102 })
16103
16104 return fee
16105 }
16106 }
16107
16108 module.exports = networks
16109
16110 },{}],67:[function(require,module,exports){
16111 module.exports = {
16112 // push value
16113 OP_FALSE: 0,
16114 OP_0: 0,
16115 OP_PUSHDATA1: 76,
16116 OP_PUSHDATA2: 77,
16117 OP_PUSHDATA4: 78,
16118 OP_1NEGATE: 79,
16119 OP_RESERVED: 80,
16120 OP_1: 81,
16121 OP_TRUE: 81,
16122 OP_2: 82,
16123 OP_3: 83,
16124 OP_4: 84,
16125 OP_5: 85,
16126 OP_6: 86,
16127 OP_7: 87,
16128 OP_8: 88,
16129 OP_9: 89,
16130 OP_10: 90,
16131 OP_11: 91,
16132 OP_12: 92,
16133 OP_13: 93,
16134 OP_14: 94,
16135 OP_15: 95,
16136 OP_16: 96,
16137
16138 // control
16139 OP_NOP: 97,
16140 OP_VER: 98,
16141 OP_IF: 99,
16142 OP_NOTIF: 100,
16143 OP_VERIF: 101,
16144 OP_VERNOTIF: 102,
16145 OP_ELSE: 103,
16146 OP_ENDIF: 104,
16147 OP_VERIFY: 105,
16148 OP_RETURN: 106,
16149
16150 // stack ops
16151 OP_TOALTSTACK: 107,
16152 OP_FROMALTSTACK: 108,
16153 OP_2DROP: 109,
16154 OP_2DUP: 110,
16155 OP_3DUP: 111,
16156 OP_2OVER: 112,
16157 OP_2ROT: 113,
16158 OP_2SWAP: 114,
16159 OP_IFDUP: 115,
16160 OP_DEPTH: 116,
16161 OP_DROP: 117,
16162 OP_DUP: 118,
16163 OP_NIP: 119,
16164 OP_OVER: 120,
16165 OP_PICK: 121,
16166 OP_ROLL: 122,
16167 OP_ROT: 123,
16168 OP_SWAP: 124,
16169 OP_TUCK: 125,
16170
16171 // splice ops
16172 OP_CAT: 126,
16173 OP_SUBSTR: 127,
16174 OP_LEFT: 128,
16175 OP_RIGHT: 129,
16176 OP_SIZE: 130,
16177
16178 // bit logic
16179 OP_INVERT: 131,
16180 OP_AND: 132,
16181 OP_OR: 133,
16182 OP_XOR: 134,
16183 OP_EQUAL: 135,
16184 OP_EQUALVERIFY: 136,
16185 OP_RESERVED1: 137,
16186 OP_RESERVED2: 138,
16187
16188 // numeric
16189 OP_1ADD: 139,
16190 OP_1SUB: 140,
16191 OP_2MUL: 141,
16192 OP_2DIV: 142,
16193 OP_NEGATE: 143,
16194 OP_ABS: 144,
16195 OP_NOT: 145,
16196 OP_0NOTEQUAL: 146,
16197
16198 OP_ADD: 147,
16199 OP_SUB: 148,
16200 OP_MUL: 149,
16201 OP_DIV: 150,
16202 OP_MOD: 151,
16203 OP_LSHIFT: 152,
16204 OP_RSHIFT: 153,
16205
16206 OP_BOOLAND: 154,
16207 OP_BOOLOR: 155,
16208 OP_NUMEQUAL: 156,
16209 OP_NUMEQUALVERIFY: 157,
16210 OP_NUMNOTEQUAL: 158,
16211 OP_LESSTHAN: 159,
16212 OP_GREATERTHAN: 160,
16213 OP_LESSTHANOREQUAL: 161,
16214 OP_GREATERTHANOREQUAL: 162,
16215 OP_MIN: 163,
16216 OP_MAX: 164,
16217
16218 OP_WITHIN: 165,
16219
16220 // crypto
16221 OP_RIPEMD160: 166,
16222 OP_SHA1: 167,
16223 OP_SHA256: 168,
16224 OP_HASH160: 169,
16225 OP_HASH256: 170,
16226 OP_CODESEPARATOR: 171,
16227 OP_CHECKSIG: 172,
16228 OP_CHECKSIGVERIFY: 173,
16229 OP_CHECKMULTISIG: 174,
16230 OP_CHECKMULTISIGVERIFY: 175,
16231
16232 // expansion
16233 OP_NOP1: 176,
16234 OP_NOP2: 177,
16235 OP_NOP3: 178,
16236 OP_NOP4: 179,
16237 OP_NOP5: 180,
16238 OP_NOP6: 181,
16239 OP_NOP7: 182,
16240 OP_NOP8: 183,
16241 OP_NOP9: 184,
16242 OP_NOP10: 185,
16243
16244 // template matching params
16245 OP_PUBKEYHASH: 253,
16246 OP_PUBKEY: 254,
16247 OP_INVALIDOPCODE: 255
16248 }
16249
16250 },{}],68:[function(require,module,exports){
16251 (function (Buffer){
16252 var assert = require('assert')
16253 var bufferutils = require('./bufferutils')
16254 var crypto = require('./crypto')
16255 var typeForce = require('typeforce')
16256 var opcodes = require('./opcodes')
16257
16258 function Script (buffer, chunks) {
16259 typeForce('Buffer', buffer)
16260 typeForce('Array', chunks)
16261
16262 this.buffer = buffer
16263 this.chunks = chunks
16264 }
16265
16266 Script.fromASM = function (asm) {
16267 var strChunks = asm.split(' ')
16268 var chunks = strChunks.map(function (strChunk) {
16269 // opcode
16270 if (strChunk in opcodes) {
16271 return opcodes[strChunk]
16272
16273 // data chunk
16274 } else {
16275 return new Buffer(strChunk, 'hex')
16276 }
16277 })
16278
16279 return Script.fromChunks(chunks)
16280 }
16281
16282 Script.fromBuffer = function (buffer) {
16283 var chunks = []
16284 var i = 0
16285
16286 while (i < buffer.length) {
16287 var opcode = buffer.readUInt8(i)
16288
16289 // data chunk
16290 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
16291 var d = bufferutils.readPushDataInt(buffer, i)
16292
16293 // did reading a pushDataInt fail? return non-chunked script
16294 if (d === null) return new Script(buffer, [])
16295 i += d.size
16296
16297 // attempt to read too much data?
16298 if (i + d.number > buffer.length) return new Script(buffer, [])
16299
16300 var data = buffer.slice(i, i + d.number)
16301 i += d.number
16302
16303 chunks.push(data)
16304
16305 // opcode
16306 } else {
16307 chunks.push(opcode)
16308
16309 i += 1
16310 }
16311 }
16312
16313 return new Script(buffer, chunks)
16314 }
16315
16316 Script.fromChunks = function (chunks) {
16317 typeForce('Array', chunks)
16318
16319 var bufferSize = chunks.reduce(function (accum, chunk) {
16320 // data chunk
16321 if (Buffer.isBuffer(chunk)) {
16322 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
16323 }
16324
16325 // opcode
16326 return accum + 1
16327 }, 0.0)
16328
16329 var buffer = new Buffer(bufferSize)
16330 var offset = 0
16331
16332 chunks.forEach(function (chunk) {
16333 // data chunk
16334 if (Buffer.isBuffer(chunk)) {
16335 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
16336
16337 chunk.copy(buffer, offset)
16338 offset += chunk.length
16339
16340 // opcode
16341 } else {
16342 buffer.writeUInt8(chunk, offset)
16343 offset += 1
16344 }
16345 })
16346
16347 assert.equal(offset, buffer.length, 'Could not decode chunks')
16348 return new Script(buffer, chunks)
16349 }
16350
16351 Script.fromHex = function (hex) {
16352 return Script.fromBuffer(new Buffer(hex, 'hex'))
16353 }
16354
16355 Script.EMPTY = Script.fromChunks([])
16356
16357 Script.prototype.getHash = function () {
16358 return crypto.hash160(this.buffer)
16359 }
16360
16361 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
16362 Script.prototype.without = function (needle) {
16363 return Script.fromChunks(this.chunks.filter(function (op) {
16364 return op !== needle
16365 }))
16366 }
16367
16368 var reverseOps = []
16369 for (var op in opcodes) {
16370 var code = opcodes[op]
16371 reverseOps[code] = op
16372 }
16373
16374 Script.prototype.toASM = function () {
16375 return this.chunks.map(function (chunk) {
16376 // data chunk
16377 if (Buffer.isBuffer(chunk)) {
16378 return chunk.toString('hex')
16379
16380 // opcode
16381 } else {
16382 return reverseOps[chunk]
16383 }
16384 }).join(' ')
16385 }
16386
16387 Script.prototype.toBuffer = function () {
16388 return this.buffer
16389 }
16390
16391 Script.prototype.toHex = function () {
16392 return this.toBuffer().toString('hex')
16393 }
16394
16395 module.exports = Script
16396
16397 }).call(this,require("buffer").Buffer)
16398 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
16399 (function (Buffer){
16400 var assert = require('assert')
16401 var ops = require('./opcodes')
16402 var typeForce = require('typeforce')
16403
16404 var ecurve = require('ecurve')
16405 var curve = ecurve.getCurveByName('secp256k1')
16406
16407 var ECSignature = require('./ecsignature')
16408 var Script = require('./script')
16409
16410 function isCanonicalPubKey (buffer) {
16411 if (!Buffer.isBuffer(buffer)) return false
16412
16413 try {
16414 ecurve.Point.decodeFrom(curve, buffer)
16415 } catch (e) {
16416 if (!(e.message.match(/Invalid sequence (length|tag)/)))
16417 throw e
16418
16419 return false
16420 }
16421
16422 return true
16423 }
16424
16425 function isCanonicalSignature (buffer) {
16426 if (!Buffer.isBuffer(buffer)) return false
16427
16428 try {
16429 ECSignature.parseScriptSignature(buffer)
16430 } catch (e) {
16431 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/))) {
16432 throw e
16433 }
16434
16435 return false
16436 }
16437
16438 return true
16439 }
16440
16441 function isPubKeyHashInput (script) {
16442 return script.chunks.length === 2 &&
16443 isCanonicalSignature(script.chunks[0]) &&
16444 isCanonicalPubKey(script.chunks[1])
16445 }
16446
16447 function isPubKeyHashOutput (script) {
16448 return script.chunks.length === 5 &&
16449 script.chunks[0] === ops.OP_DUP &&
16450 script.chunks[1] === ops.OP_HASH160 &&
16451 Buffer.isBuffer(script.chunks[2]) &&
16452 script.chunks[2].length === 20 &&
16453 script.chunks[3] === ops.OP_EQUALVERIFY &&
16454 script.chunks[4] === ops.OP_CHECKSIG
16455 }
16456
16457 function isPubKeyInput (script) {
16458 return script.chunks.length === 1 &&
16459 isCanonicalSignature(script.chunks[0])
16460 }
16461
16462 function isPubKeyOutput (script) {
16463 return script.chunks.length === 2 &&
16464 isCanonicalPubKey(script.chunks[0]) &&
16465 script.chunks[1] === ops.OP_CHECKSIG
16466 }
16467
16468 function isScriptHashInput (script, allowIncomplete) {
16469 if (script.chunks.length < 2) return false
16470
16471 var lastChunk = script.chunks[script.chunks.length - 1]
16472 if (!Buffer.isBuffer(lastChunk)) return false
16473
16474 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
16475 var redeemScript = Script.fromBuffer(lastChunk)
16476
16477 // is redeemScript a valid script?
16478 if (redeemScript.chunks.length === 0) return false
16479
16480 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
16481 }
16482
16483 function isScriptHashOutput (script) {
16484 return script.chunks.length === 3 &&
16485 script.chunks[0] === ops.OP_HASH160 &&
16486 Buffer.isBuffer(script.chunks[1]) &&
16487 script.chunks[1].length === 20 &&
16488 script.chunks[2] === ops.OP_EQUAL
16489 }
16490
16491 // allowIncomplete is to account for combining signatures
16492 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
16493 function isMultisigInput (script, allowIncomplete) {
16494 if (script.chunks.length < 2) return false
16495 if (script.chunks[0] !== ops.OP_0) return false
16496
16497 if (allowIncomplete) {
16498 return script.chunks.slice(1).every(function (chunk) {
16499 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
16500 })
16501 }
16502
16503 return script.chunks.slice(1).every(isCanonicalSignature)
16504 }
16505
16506 function isMultisigOutput (script) {
16507 if (script.chunks.length < 4) return false
16508 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
16509
16510 var mOp = script.chunks[0]
16511 if (mOp === ops.OP_0) return false
16512 if (mOp < ops.OP_1) return false
16513 if (mOp > ops.OP_16) return false
16514
16515 var nOp = script.chunks[script.chunks.length - 2]
16516 if (nOp === ops.OP_0) return false
16517 if (nOp < ops.OP_1) return false
16518 if (nOp > ops.OP_16) return false
16519
16520 var m = mOp - (ops.OP_1 - 1)
16521 var n = nOp - (ops.OP_1 - 1)
16522 if (n < m) return false
16523
16524 var pubKeys = script.chunks.slice(1, -2)
16525 if (n < pubKeys.length) return false
16526
16527 return pubKeys.every(isCanonicalPubKey)
16528 }
16529
16530 function isNullDataOutput (script) {
16531 return script.chunks[0] === ops.OP_RETURN
16532 }
16533
16534 function classifyOutput (script) {
16535 typeForce('Script', script)
16536
16537 if (isPubKeyHashOutput(script)) {
16538 return 'pubkeyhash'
16539 } else if (isScriptHashOutput(script)) {
16540 return 'scripthash'
16541 } else if (isMultisigOutput(script)) {
16542 return 'multisig'
16543 } else if (isPubKeyOutput(script)) {
16544 return 'pubkey'
16545 } else if (isNullDataOutput(script)) {
16546 return 'nulldata'
16547 }
16548
16549 return 'nonstandard'
16550 }
16551
16552 function classifyInput (script, allowIncomplete) {
16553 typeForce('Script', script)
16554
16555 if (isPubKeyHashInput(script)) {
16556 return 'pubkeyhash'
16557 } else if (isMultisigInput(script, allowIncomplete)) {
16558 return 'multisig'
16559 } else if (isScriptHashInput(script, allowIncomplete)) {
16560 return 'scripthash'
16561 } else if (isPubKeyInput(script)) {
16562 return 'pubkey'
16563 }
16564
16565 return 'nonstandard'
16566 }
16567
16568 // Standard Script Templates
16569 // {pubKey} OP_CHECKSIG
16570 function pubKeyOutput (pubKey) {
16571 return Script.fromChunks([
16572 pubKey.toBuffer(),
16573 ops.OP_CHECKSIG
16574 ])
16575 }
16576
16577 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
16578 function pubKeyHashOutput (hash) {
16579 typeForce('Buffer', hash)
16580
16581 return Script.fromChunks([
16582 ops.OP_DUP,
16583 ops.OP_HASH160,
16584 hash,
16585 ops.OP_EQUALVERIFY,
16586 ops.OP_CHECKSIG
16587 ])
16588 }
16589
16590 // OP_HASH160 {scriptHash} OP_EQUAL
16591 function scriptHashOutput (hash) {
16592 typeForce('Buffer', hash)
16593
16594 return Script.fromChunks([
16595 ops.OP_HASH160,
16596 hash,
16597 ops.OP_EQUAL
16598 ])
16599 }
16600
16601 // m [pubKeys ...] n OP_CHECKMULTISIG
16602 function multisigOutput (m, pubKeys) {
16603 typeForce(['ECPubKey'], pubKeys)
16604
16605 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
16606
16607 var pubKeyBuffers = pubKeys.map(function (pubKey) {
16608 return pubKey.toBuffer()
16609 })
16610 var n = pubKeys.length
16611
16612 return Script.fromChunks([].concat(
16613 (ops.OP_1 - 1) + m,
16614 pubKeyBuffers,
16615 (ops.OP_1 - 1) + n,
16616 ops.OP_CHECKMULTISIG
16617 ))
16618 }
16619
16620 // {signature}
16621 function pubKeyInput (signature) {
16622 typeForce('Buffer', signature)
16623
16624 return Script.fromChunks([signature])
16625 }
16626
16627 // {signature} {pubKey}
16628 function pubKeyHashInput (signature, pubKey) {
16629 typeForce('Buffer', signature)
16630
16631 return Script.fromChunks([signature, pubKey.toBuffer()])
16632 }
16633
16634 // <scriptSig> {serialized scriptPubKey script}
16635 function scriptHashInput (scriptSig, scriptPubKey) {
16636 return Script.fromChunks([].concat(
16637 scriptSig.chunks,
16638 scriptPubKey.toBuffer()
16639 ))
16640 }
16641
16642 // OP_0 [signatures ...]
16643 function multisigInput (signatures, scriptPubKey) {
16644 if (scriptPubKey) {
16645 assert(isMultisigOutput(scriptPubKey))
16646
16647 var mOp = scriptPubKey.chunks[0]
16648 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
16649 var m = mOp - (ops.OP_1 - 1)
16650 var n = nOp - (ops.OP_1 - 1)
16651
16652 assert(signatures.length >= m, 'Not enough signatures provided')
16653 assert(signatures.length <= n, 'Too many signatures provided')
16654 }
16655
16656 return Script.fromChunks([].concat(ops.OP_0, signatures))
16657 }
16658
16659 function nullDataOutput (data) {
16660 return Script.fromChunks([ops.OP_RETURN, data])
16661 }
16662
16663 module.exports = {
16664 isCanonicalPubKey: isCanonicalPubKey,
16665 isCanonicalSignature: isCanonicalSignature,
16666 isPubKeyHashInput: isPubKeyHashInput,
16667 isPubKeyHashOutput: isPubKeyHashOutput,
16668 isPubKeyInput: isPubKeyInput,
16669 isPubKeyOutput: isPubKeyOutput,
16670 isScriptHashInput: isScriptHashInput,
16671 isScriptHashOutput: isScriptHashOutput,
16672 isMultisigInput: isMultisigInput,
16673 isMultisigOutput: isMultisigOutput,
16674 isNullDataOutput: isNullDataOutput,
16675 classifyOutput: classifyOutput,
16676 classifyInput: classifyInput,
16677 pubKeyOutput: pubKeyOutput,
16678 pubKeyHashOutput: pubKeyHashOutput,
16679 scriptHashOutput: scriptHashOutput,
16680 multisigOutput: multisigOutput,
16681 pubKeyInput: pubKeyInput,
16682 pubKeyHashInput: pubKeyHashInput,
16683 scriptHashInput: scriptHashInput,
16684 multisigInput: multisigInput,
16685 dataOutput: function (data) {
16686 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
16687 return nullDataOutput(data)
16688 },
16689 nullDataOutput: nullDataOutput
16690 }
16691
16692 }).call(this,require("buffer").Buffer)
16693 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
16694 (function (Buffer){
16695 var assert = require('assert')
16696 var bufferutils = require('./bufferutils')
16697 var crypto = require('./crypto')
16698 var typeForce = require('typeforce')
16699 var opcodes = require('./opcodes')
16700 var scripts = require('./scripts')
16701
16702 var Address = require('./address')
16703 var ECSignature = require('./ecsignature')
16704 var Script = require('./script')
16705
16706 function Transaction () {
16707 this.version = 1
16708 this.locktime = 0
16709 this.ins = []
16710 this.outs = []
16711 }
16712
16713 Transaction.DEFAULT_SEQUENCE = 0xffffffff
16714 Transaction.SIGHASH_ALL = 0x01
16715 Transaction.SIGHASH_NONE = 0x02
16716 Transaction.SIGHASH_SINGLE = 0x03
16717 Transaction.SIGHASH_ANYONECANPAY = 0x80
16718
16719 Transaction.fromBuffer = function (buffer, __disableAssert) {
16720 var offset = 0
16721 function readSlice (n) {
16722 offset += n
16723 return buffer.slice(offset - n, offset)
16724 }
16725
16726 function readUInt32 () {
16727 var i = buffer.readUInt32LE(offset)
16728 offset += 4
16729 return i
16730 }
16731
16732 function readUInt64 () {
16733 var i = bufferutils.readUInt64LE(buffer, offset)
16734 offset += 8
16735 return i
16736 }
16737
16738 function readVarInt () {
16739 var vi = bufferutils.readVarInt(buffer, offset)
16740 offset += vi.size
16741 return vi.number
16742 }
16743
16744 function readScript () {
16745 return Script.fromBuffer(readSlice(readVarInt()))
16746 }
16747
16748 function readGenerationScript () {
16749 return new Script(readSlice(readVarInt()), [])
16750 }
16751
16752 var tx = new Transaction()
16753 tx.version = readUInt32()
16754
16755 var vinLen = readVarInt()
16756 for (var i = 0; i < vinLen; ++i) {
16757 var hash = readSlice(32)
16758
16759 if (Transaction.isCoinbaseHash(hash)) {
16760 tx.ins.push({
16761 hash: hash,
16762 index: readUInt32(),
16763 script: readGenerationScript(),
16764 sequence: readUInt32()
16765 })
16766 } else {
16767 tx.ins.push({
16768 hash: hash,
16769 index: readUInt32(),
16770 script: readScript(),
16771 sequence: readUInt32()
16772 })
16773 }
16774 }
16775
16776 var voutLen = readVarInt()
16777 for (i = 0; i < voutLen; ++i) {
16778 tx.outs.push({
16779 value: readUInt64(),
16780 script: readScript()
16781 })
16782 }
16783
16784 tx.locktime = readUInt32()
16785
16786 if (!__disableAssert) {
16787 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
16788 }
16789
16790 return tx
16791 }
16792
16793 Transaction.fromHex = function (hex) {
16794 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
16795 }
16796
16797 Transaction.isCoinbaseHash = function (buffer) {
16798 return Array.prototype.every.call(buffer, function (x) {
16799 return x === 0
16800 })
16801 }
16802
16803 /**
16804 * Create a new txIn.
16805 *
16806 * Can be called with any of:
16807 *
16808 * - A transaction and an index
16809 * - A transaction hash and an index
16810 *
16811 * Note that this method does not sign the created input.
16812 */
16813 Transaction.prototype.addInput = function (hash, index, sequence, script) {
16814 if (sequence === undefined || sequence === null) {
16815 sequence = Transaction.DEFAULT_SEQUENCE
16816 }
16817
16818 script = script || Script.EMPTY
16819
16820 if (typeof hash === 'string') {
16821 // TxId hex is big-endian, we need little-endian
16822 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
16823 } else if (hash instanceof Transaction) {
16824 hash = hash.getHash()
16825 }
16826
16827 typeForce('Buffer', hash)
16828 typeForce('Number', index)
16829 typeForce('Number', sequence)
16830 typeForce('Script', script)
16831
16832 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
16833
16834 // Add the input and return the input's index
16835 return (this.ins.push({
16836 hash: hash,
16837 index: index,
16838 script: script,
16839 sequence: sequence
16840 }) - 1)
16841 }
16842
16843 /**
16844 * Create a new txOut.
16845 *
16846 * Can be called with:
16847 *
16848 * - A base58 address string and a value
16849 * - An Address object and a value
16850 * - A scriptPubKey Script and a value
16851 */
16852 Transaction.prototype.addOutput = function (scriptPubKey, value) {
16853 // Attempt to get a valid address if it's a base58 address string
16854 if (typeof scriptPubKey === 'string') {
16855 scriptPubKey = Address.fromBase58Check(scriptPubKey)
16856 }
16857
16858 // Attempt to get a valid script if it's an Address object
16859 if (scriptPubKey instanceof Address) {
16860 scriptPubKey = scriptPubKey.toOutputScript()
16861 }
16862
16863 typeForce('Script', scriptPubKey)
16864 typeForce('Number', value)
16865
16866 // Add the output and return the output's index
16867 return (this.outs.push({
16868 script: scriptPubKey,
16869 value: value
16870 }) - 1)
16871 }
16872
16873 Transaction.prototype.clone = function () {
16874 var newTx = new Transaction()
16875 newTx.version = this.version
16876 newTx.locktime = this.locktime
16877
16878 newTx.ins = this.ins.map(function (txIn) {
16879 return {
16880 hash: txIn.hash,
16881 index: txIn.index,
16882 script: txIn.script,
16883 sequence: txIn.sequence
16884 }
16885 })
16886
16887 newTx.outs = this.outs.map(function (txOut) {
16888 return {
16889 script: txOut.script,
16890 value: txOut.value
16891 }
16892 })
16893
16894 return newTx
16895 }
16896
16897 /**
16898 * Hash transaction for signing a specific input.
16899 *
16900 * Bitcoin uses a different hash for each signed transaction input. This
16901 * method copies the transaction, makes the necessary changes based on the
16902 * hashType, serializes and finally hashes the result. This hash can then be
16903 * used to sign the transaction input in question.
16904 */
16905 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
16906 // FIXME: remove in 2.x.y
16907 if (arguments[0] instanceof Script) {
16908 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
16909
16910 // swap the arguments (must be stored in tmp, arguments is special)
16911 var tmp = arguments[0]
16912 inIndex = arguments[1]
16913 prevOutScript = tmp
16914 }
16915
16916 typeForce('Number', inIndex)
16917 typeForce('Script', prevOutScript)
16918 typeForce('Number', hashType)
16919
16920 assert(inIndex >= 0, 'Invalid vin index')
16921 assert(inIndex < this.ins.length, 'Invalid vin index')
16922
16923 var txTmp = this.clone()
16924 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
16925
16926 // Blank out other inputs' signatures
16927 txTmp.ins.forEach(function (txIn) {
16928 txIn.script = Script.EMPTY
16929 })
16930 txTmp.ins[inIndex].script = hashScript
16931
16932 var hashTypeModifier = hashType & 0x1f
16933
16934 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
16935 assert(false, 'SIGHASH_NONE not yet supported')
16936 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
16937 assert(false, 'SIGHASH_SINGLE not yet supported')
16938 }
16939
16940 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
16941 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
16942 }
16943
16944 var hashTypeBuffer = new Buffer(4)
16945 hashTypeBuffer.writeInt32LE(hashType, 0)
16946
16947 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
16948 return crypto.hash256(buffer)
16949 }
16950
16951 Transaction.prototype.getHash = function () {
16952 return crypto.hash256(this.toBuffer())
16953 }
16954
16955 Transaction.prototype.getId = function () {
16956 // TxHash is little-endian, we need big-endian
16957 return bufferutils.reverse(this.getHash()).toString('hex')
16958 }
16959
16960 Transaction.prototype.toBuffer = function () {
16961 function scriptSize (script) {
16962 var length = script.buffer.length
16963
16964 return bufferutils.varIntSize(length) + length
16965 }
16966
16967 var buffer = new Buffer(
16968 8 +
16969 bufferutils.varIntSize(this.ins.length) +
16970 bufferutils.varIntSize(this.outs.length) +
16971 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
16972 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
16973 )
16974
16975 var offset = 0
16976 function writeSlice (slice) {
16977 slice.copy(buffer, offset)
16978 offset += slice.length
16979 }
16980
16981 function writeUInt32 (i) {
16982 buffer.writeUInt32LE(i, offset)
16983 offset += 4
16984 }
16985
16986 function writeUInt64 (i) {
16987 bufferutils.writeUInt64LE(buffer, i, offset)
16988 offset += 8
16989 }
16990
16991 function writeVarInt (i) {
16992 var n = bufferutils.writeVarInt(buffer, i, offset)
16993 offset += n
16994 }
16995
16996 writeUInt32(this.version)
16997 writeVarInt(this.ins.length)
16998
16999 this.ins.forEach(function (txIn) {
17000 writeSlice(txIn.hash)
17001 writeUInt32(txIn.index)
17002 writeVarInt(txIn.script.buffer.length)
17003 writeSlice(txIn.script.buffer)
17004 writeUInt32(txIn.sequence)
17005 })
17006
17007 writeVarInt(this.outs.length)
17008 this.outs.forEach(function (txOut) {
17009 writeUInt64(txOut.value)
17010 writeVarInt(txOut.script.buffer.length)
17011 writeSlice(txOut.script.buffer)
17012 })
17013
17014 writeUInt32(this.locktime)
17015
17016 return buffer
17017 }
17018
17019 Transaction.prototype.toHex = function () {
17020 return this.toBuffer().toString('hex')
17021 }
17022
17023 Transaction.prototype.setInputScript = function (index, script) {
17024 typeForce('Number', index)
17025 typeForce('Script', script)
17026
17027 this.ins[index].script = script
17028 }
17029
17030 // FIXME: remove in 2.x.y
17031 Transaction.prototype.sign = function (index, privKey, hashType) {
17032 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
17033
17034 var prevOutScript = privKey.pub.getAddress().toOutputScript()
17035 var signature = this.signInput(index, prevOutScript, privKey, hashType)
17036
17037 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
17038 this.setInputScript(index, scriptSig)
17039 }
17040
17041 // FIXME: remove in 2.x.y
17042 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
17043 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
17044
17045 hashType = hashType || Transaction.SIGHASH_ALL
17046
17047 var hash = this.hashForSignature(index, prevOutScript, hashType)
17048 var signature = privKey.sign(hash)
17049
17050 return signature.toScriptSignature(hashType)
17051 }
17052
17053 // FIXME: remove in 2.x.y
17054 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
17055 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
17056
17057 var parsed = ECSignature.parseScriptSignature(buffer)
17058 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
17059
17060 return pubKey.verify(hash, parsed.signature)
17061 }
17062
17063 module.exports = Transaction
17064
17065 }).call(this,require("buffer").Buffer)
17066 },{"./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){
17067 (function (Buffer){
17068 var assert = require('assert')
17069 var ops = require('./opcodes')
17070 var scripts = require('./scripts')
17071
17072 var ECPubKey = require('./ecpubkey')
17073 var ECSignature = require('./ecsignature')
17074 var Script = require('./script')
17075 var Transaction = require('./transaction')
17076
17077 function extractInput (txIn) {
17078 var redeemScript
17079 var scriptSig = txIn.script
17080 var prevOutScript
17081 var prevOutType = scripts.classifyInput(scriptSig, true)
17082 var scriptType
17083
17084 // Re-classify if scriptHash
17085 if (prevOutType === 'scripthash') {
17086 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
17087 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
17088
17089 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
17090 scriptType = scripts.classifyInput(scriptSig, true)
17091 } else {
17092 scriptType = prevOutType
17093 }
17094
17095 // Extract hashType, pubKeys and signatures
17096 var hashType, parsed, pubKeys, signatures
17097
17098 switch (scriptType) {
17099 case 'pubkeyhash': {
17100 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
17101 hashType = parsed.hashType
17102 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
17103 signatures = [parsed.signature]
17104 prevOutScript = pubKeys[0].getAddress().toOutputScript()
17105
17106 break
17107 }
17108
17109 case 'pubkey': {
17110 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
17111 hashType = parsed.hashType
17112 signatures = [parsed.signature]
17113
17114 if (redeemScript) {
17115 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
17116 }
17117
17118 break
17119 }
17120
17121 case 'multisig': {
17122 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
17123 if (chunk === ops.OP_0) return chunk
17124
17125 var parsed = ECSignature.parseScriptSignature(chunk)
17126 hashType = parsed.hashType
17127
17128 return parsed.signature
17129 })
17130
17131 if (redeemScript) {
17132 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
17133 }
17134
17135 break
17136 }
17137 }
17138
17139 return {
17140 hashType: hashType,
17141 prevOutScript: prevOutScript,
17142 prevOutType: prevOutType,
17143 pubKeys: pubKeys,
17144 redeemScript: redeemScript,
17145 scriptType: scriptType,
17146 signatures: signatures
17147 }
17148 }
17149
17150 function TransactionBuilder () {
17151 this.prevTxMap = {}
17152 this.prevOutScripts = {}
17153 this.prevOutTypes = {}
17154
17155 this.inputs = []
17156 this.tx = new Transaction()
17157 }
17158
17159 TransactionBuilder.fromTransaction = function (transaction) {
17160 var txb = new TransactionBuilder()
17161
17162 // Copy other transaction fields
17163 txb.tx.version = transaction.version
17164 txb.tx.locktime = transaction.locktime
17165
17166 // Extract/add inputs
17167 transaction.ins.forEach(function (txIn) {
17168 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
17169 })
17170
17171 // Extract/add outputs
17172 transaction.outs.forEach(function (txOut) {
17173 txb.addOutput(txOut.script, txOut.value)
17174 })
17175
17176 // Extract/add signatures
17177 txb.inputs = transaction.ins.map(function (txIn) {
17178 // TODO: remove me after testcase added
17179 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
17180
17181 // Ignore empty scripts
17182 if (txIn.script.buffer.length === 0) return {}
17183
17184 return extractInput(txIn)
17185 })
17186
17187 return txb
17188 }
17189
17190 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
17191 var prevOutHash
17192
17193 // txId
17194 if (typeof prevTx === 'string') {
17195 prevOutHash = new Buffer(prevTx, 'hex')
17196
17197 // TxId hex is big-endian, we want little-endian hash
17198 Array.prototype.reverse.call(prevOutHash)
17199
17200 // Transaction
17201 } else if (prevTx instanceof Transaction) {
17202 prevOutHash = prevTx.getHash()
17203 prevOutScript = prevTx.outs[index].script
17204
17205 // txHash
17206 } else {
17207 prevOutHash = prevTx
17208 }
17209
17210 var input = {}
17211 if (prevOutScript) {
17212 var prevOutType = scripts.classifyOutput(prevOutScript)
17213
17214 // if we can, extract pubKey information
17215 switch (prevOutType) {
17216 case 'multisig': {
17217 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
17218 break
17219 }
17220
17221 case 'pubkey': {
17222 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
17223 break
17224 }
17225 }
17226
17227 if (prevOutType !== 'scripthash') {
17228 input.scriptType = prevOutType
17229 }
17230
17231 input.prevOutScript = prevOutScript
17232 input.prevOutType = prevOutType
17233 }
17234
17235 assert(this.inputs.every(function (input2) {
17236 if (input2.hashType === undefined) return true
17237
17238 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
17239 }), 'No, this would invalidate signatures')
17240
17241 var prevOut = prevOutHash.toString('hex') + ':' + index
17242 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
17243
17244 var vin = this.tx.addInput(prevOutHash, index, sequence)
17245 this.inputs[vin] = input
17246 this.prevTxMap[prevOut] = vin
17247
17248 return vin
17249 }
17250
17251 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
17252 assert(this.inputs.every(function (input) {
17253 if (input.hashType === undefined) return true
17254
17255 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
17256 }), 'No, this would invalidate signatures')
17257
17258 return this.tx.addOutput(scriptPubKey, value)
17259 }
17260
17261 TransactionBuilder.prototype.build = function () {
17262 return this.__build(false)
17263 }
17264 TransactionBuilder.prototype.buildIncomplete = function () {
17265 return this.__build(true)
17266 }
17267
17268 var canSignTypes = {
17269 'pubkeyhash': true,
17270 'multisig': true,
17271 'pubkey': true
17272 }
17273
17274 TransactionBuilder.prototype.__build = function (allowIncomplete) {
17275 if (!allowIncomplete) {
17276 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
17277 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
17278 }
17279
17280 var tx = this.tx.clone()
17281
17282 // Create script signatures from signature meta-data
17283 this.inputs.forEach(function (input, index) {
17284 var scriptType = input.scriptType
17285 var scriptSig
17286
17287 if (!allowIncomplete) {
17288 assert(!!scriptType, 'Transaction is not complete')
17289 assert(scriptType in canSignTypes, scriptType + ' not supported')
17290 assert(input.signatures, 'Transaction is missing signatures')
17291 }
17292
17293 if (input.signatures) {
17294 switch (scriptType) {
17295 case 'pubkeyhash': {
17296 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
17297 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
17298 break
17299 }
17300
17301 case 'multisig': {
17302 // Array.prototype.map is sparse-compatible
17303 var msSignatures = input.signatures.map(function (signature) {
17304 return signature && signature.toScriptSignature(input.hashType)
17305 })
17306
17307 // fill in blanks with OP_0
17308 if (allowIncomplete) {
17309 for (var i = 0; i < msSignatures.length; ++i) {
17310 if (msSignatures[i]) continue
17311
17312 msSignatures[i] = ops.OP_0
17313 }
17314 } else {
17315 // Array.prototype.filter returns non-sparse array
17316 msSignatures = msSignatures.filter(function (x) { return x })
17317 }
17318
17319 var redeemScript = allowIncomplete ? undefined : input.redeemScript
17320 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
17321 break
17322 }
17323
17324 case 'pubkey': {
17325 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
17326 scriptSig = scripts.pubKeyInput(pkSignature)
17327 break
17328 }
17329 }
17330 }
17331
17332 // did we build a scriptSig?
17333 if (scriptSig) {
17334 // wrap as scriptHash if necessary
17335 if (input.prevOutType === 'scripthash') {
17336 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
17337 }
17338
17339 tx.setInputScript(index, scriptSig)
17340 }
17341 })
17342
17343 return tx
17344 }
17345
17346 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
17347 assert(index in this.inputs, 'No input at index: ' + index)
17348 hashType = hashType || Transaction.SIGHASH_ALL
17349
17350 var input = this.inputs[index]
17351 var canSign = input.hashType &&
17352 input.prevOutScript &&
17353 input.prevOutType &&
17354 input.pubKeys &&
17355 input.scriptType &&
17356 input.signatures
17357
17358 // are we almost ready to sign?
17359 if (canSign) {
17360 // if redeemScript was provided, enforce consistency
17361 if (redeemScript) {
17362 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
17363 }
17364
17365 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
17366
17367 // no? prepare
17368 } else {
17369 // must be pay-to-scriptHash?
17370 if (redeemScript) {
17371 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
17372 if (input.prevOutScript) {
17373 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
17374
17375 var scriptHash = input.prevOutScript.chunks[1]
17376 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
17377 }
17378
17379 var scriptType = scripts.classifyOutput(redeemScript)
17380 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
17381
17382 var pubKeys = []
17383 switch (scriptType) {
17384 case 'multisig': {
17385 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
17386 break
17387 }
17388
17389 case 'pubkeyhash': {
17390 var pkh1 = redeemScript.chunks[2]
17391 var pkh2 = privKey.pub.getAddress().hash
17392
17393 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
17394 pubKeys = [privKey.pub]
17395 break
17396 }
17397
17398 case 'pubkey': {
17399 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
17400 break
17401 }
17402 }
17403
17404 if (!input.prevOutScript) {
17405 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
17406 input.prevOutType = 'scripthash'
17407 }
17408
17409 input.pubKeys = pubKeys
17410 input.redeemScript = redeemScript
17411 input.scriptType = scriptType
17412
17413 // cannot be pay-to-scriptHash
17414 } else {
17415 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
17416
17417 // can we otherwise sign this?
17418 if (input.scriptType) {
17419 assert(input.pubKeys, input.scriptType + ' not supported')
17420
17421 // we know nothin' Jon Snow, assume pubKeyHash
17422 } else {
17423 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
17424 input.prevOutType = 'pubkeyhash'
17425 input.pubKeys = [privKey.pub]
17426 input.scriptType = input.prevOutType
17427 }
17428 }
17429
17430 input.hashType = hashType
17431 input.signatures = input.signatures || []
17432 }
17433
17434 var signatureScript = input.redeemScript || input.prevOutScript
17435 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
17436
17437 // enforce signature order matches public keys
17438 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
17439 // maintain a local copy of unmatched signatures
17440 var unmatched = input.signatures.slice()
17441
17442 input.signatures = input.pubKeys.map(function (pubKey) {
17443 var match
17444
17445 // check for any matching signatures
17446 unmatched.some(function (signature, i) {
17447 if (!pubKey.verify(signatureHash, signature)) return false
17448 match = signature
17449
17450 // remove matched signature from unmatched
17451 unmatched.splice(i, 1)
17452
17453 return true
17454 })
17455
17456 return match || undefined
17457 })
17458 }
17459
17460 // enforce in order signing of public keys
17461 assert(input.pubKeys.some(function (pubKey, i) {
17462 if (!privKey.pub.Q.equals(pubKey.Q)) return false
17463
17464 assert(!input.signatures[i], 'Signature already exists')
17465 var signature = privKey.sign(signatureHash)
17466 input.signatures[i] = signature
17467
17468 return true
17469 }, this), 'privateKey cannot sign for this input')
17470 }
17471
17472 module.exports = TransactionBuilder
17473
17474 }).call(this,require("buffer").Buffer)
17475 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
17476 (function (Buffer){
17477 var assert = require('assert')
17478 var bufferutils = require('./bufferutils')
17479 var typeForce = require('typeforce')
17480 var networks = require('./networks')
17481 var randomBytes = require('randombytes')
17482
17483 var Address = require('./address')
17484 var HDNode = require('./hdnode')
17485 var TransactionBuilder = require('./transaction_builder')
17486 var Script = require('./script')
17487
17488 function Wallet (seed, network) {
17489 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
17490
17491 seed = seed || randomBytes(32)
17492 network = network || networks.bitcoin
17493
17494 // Stored in a closure to make accidental serialization less likely
17495 var masterKey = HDNode.fromSeedBuffer(seed, network)
17496
17497 // HD first-level child derivation method should be hardened
17498 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
17499 var accountZero = masterKey.deriveHardened(0)
17500 var externalAccount = accountZero.derive(0)
17501 var internalAccount = accountZero.derive(1)
17502
17503 this.addresses = []
17504 this.changeAddresses = []
17505 this.network = network
17506 this.unspents = []
17507
17508 // FIXME: remove in 2.0.0
17509 this.unspentMap = {}
17510
17511 // FIXME: remove in 2.0.0
17512 var me = this
17513 this.newMasterKey = function (seed) {
17514 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
17515
17516 seed = seed || randomBytes(32)
17517 masterKey = HDNode.fromSeedBuffer(seed, network)
17518
17519 accountZero = masterKey.deriveHardened(0)
17520 externalAccount = accountZero.derive(0)
17521 internalAccount = accountZero.derive(1)
17522
17523 me.addresses = []
17524 me.changeAddresses = []
17525
17526 me.unspents = []
17527 me.unspentMap = {}
17528 }
17529
17530 this.getMasterKey = function () {
17531 return masterKey
17532 }
17533 this.getAccountZero = function () {
17534 return accountZero
17535 }
17536 this.getExternalAccount = function () {
17537 return externalAccount
17538 }
17539 this.getInternalAccount = function () {
17540 return internalAccount
17541 }
17542 }
17543
17544 Wallet.prototype.createTransaction = function (to, value, options) {
17545 // FIXME: remove in 2.0.0
17546 if (typeof options !== 'object') {
17547 if (options !== undefined) {
17548 console.warn('Non options object parameters are deprecated, use options object instead')
17549
17550 options = {
17551 fixedFee: arguments[2],
17552 changeAddress: arguments[3]
17553 }
17554 }
17555 }
17556
17557 options = options || {}
17558
17559 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
17560
17561 var changeAddress = options.changeAddress
17562 var fixedFee = options.fixedFee
17563 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
17564
17565 // filter by minConf, then pending and sort by descending value
17566 var unspents = this.unspents.filter(function (unspent) {
17567 return unspent.confirmations >= minConf
17568 }).filter(function (unspent) {
17569 return !unspent.pending
17570 }).sort(function (o1, o2) {
17571 return o2.value - o1.value
17572 })
17573
17574 var accum = 0
17575 var addresses = []
17576 var subTotal = value
17577
17578 var txb = new TransactionBuilder()
17579 txb.addOutput(to, value)
17580
17581 for (var i = 0; i < unspents.length; ++i) {
17582 var unspent = unspents[i]
17583 addresses.push(unspent.address)
17584
17585 txb.addInput(unspent.txHash, unspent.index)
17586
17587 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
17588
17589 accum += unspent.value
17590 subTotal = value + fee
17591
17592 if (accum >= subTotal) {
17593 var change = accum - subTotal
17594
17595 if (change > this.network.dustThreshold) {
17596 txb.addOutput(changeAddress || this.getChangeAddress(), change)
17597 }
17598
17599 break
17600 }
17601 }
17602
17603 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
17604
17605 return this.signWith(txb, addresses).build()
17606 }
17607
17608 // FIXME: remove in 2.0.0
17609 Wallet.prototype.processPendingTx = function (tx) {
17610 this.__processTx(tx, true)
17611 }
17612
17613 // FIXME: remove in 2.0.0
17614 Wallet.prototype.processConfirmedTx = function (tx) {
17615 this.__processTx(tx, false)
17616 }
17617
17618 // FIXME: remove in 2.0.0
17619 Wallet.prototype.__processTx = function (tx, isPending) {
17620 console.warn('processTransaction is considered harmful, see issue #260 for more information')
17621
17622 var txId = tx.getId()
17623 var txHash = tx.getHash()
17624
17625 tx.outs.forEach(function (txOut, i) {
17626 var address
17627
17628 try {
17629 address = Address.fromOutputScript(txOut.script, this.network).toString()
17630 } catch (e) {
17631 if (!(e.message.match(/has no matching Address/)))
17632 throw e
17633 }
17634
17635 var myAddresses = this.addresses.concat(this.changeAddresses)
17636 if (myAddresses.indexOf(address) > -1) {
17637 var lookup = txId + ':' + i
17638 if (lookup in this.unspentMap) return
17639
17640 // its unique, add it
17641 var unspent = {
17642 address: address,
17643 confirmations: 0, // no way to determine this without more information
17644 index: i,
17645 txHash: txHash,
17646 txId: txId,
17647 value: txOut.value,
17648 pending: isPending
17649 }
17650
17651 this.unspentMap[lookup] = unspent
17652 this.unspents.push(unspent)
17653 }
17654 }, this)
17655
17656 tx.ins.forEach(function (txIn) {
17657 // copy and convert to big-endian hex
17658 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
17659
17660 var lookup = txInId + ':' + txIn.index
17661 if (!(lookup in this.unspentMap)) return
17662
17663 var unspent = this.unspentMap[lookup]
17664
17665 if (isPending) {
17666 unspent.pending = true
17667 unspent.spent = true
17668 } else {
17669 delete this.unspentMap[lookup]
17670
17671 this.unspents = this.unspents.filter(function (unspent2) {
17672 return unspent !== unspent2
17673 })
17674 }
17675 }, this)
17676 }
17677
17678 Wallet.prototype.generateAddress = function () {
17679 var k = this.addresses.length
17680 var address = this.getExternalAccount().derive(k).getAddress()
17681
17682 this.addresses.push(address.toString())
17683
17684 return this.getReceiveAddress()
17685 }
17686
17687 Wallet.prototype.generateChangeAddress = function () {
17688 var k = this.changeAddresses.length
17689 var address = this.getInternalAccount().derive(k).getAddress()
17690
17691 this.changeAddresses.push(address.toString())
17692
17693 return this.getChangeAddress()
17694 }
17695
17696 Wallet.prototype.getAddress = function () {
17697 if (this.addresses.length === 0) {
17698 this.generateAddress()
17699 }
17700
17701 return this.addresses[this.addresses.length - 1]
17702 }
17703
17704 Wallet.prototype.getBalance = function (minConf) {
17705 minConf = minConf || 0
17706
17707 return this.unspents.filter(function (unspent) {
17708 return unspent.confirmations >= minConf
17709
17710 // FIXME: remove spent filter in 2.0.0
17711 }).filter(function (unspent) {
17712 return !unspent.spent
17713 }).reduce(function (accum, unspent) {
17714 return accum + unspent.value
17715 }, 0)
17716 }
17717
17718 Wallet.prototype.getChangeAddress = function () {
17719 if (this.changeAddresses.length === 0) {
17720 this.generateChangeAddress()
17721 }
17722
17723 return this.changeAddresses[this.changeAddresses.length - 1]
17724 }
17725
17726 Wallet.prototype.getInternalPrivateKey = function (index) {
17727 return this.getInternalAccount().derive(index).privKey
17728 }
17729
17730 Wallet.prototype.getPrivateKey = function (index) {
17731 return this.getExternalAccount().derive(index).privKey
17732 }
17733
17734 Wallet.prototype.getPrivateKeyForAddress = function (address) {
17735 var index
17736
17737 if ((index = this.addresses.indexOf(address)) > -1) {
17738 return this.getPrivateKey(index)
17739 }
17740
17741 if ((index = this.changeAddresses.indexOf(address)) > -1) {
17742 return this.getInternalPrivateKey(index)
17743 }
17744
17745 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
17746 }
17747
17748 Wallet.prototype.getUnspentOutputs = function (minConf) {
17749 minConf = minConf || 0
17750
17751 return this.unspents.filter(function (unspent) {
17752 return unspent.confirmations >= minConf
17753
17754 // FIXME: remove spent filter in 2.0.0
17755 }).filter(function (unspent) {
17756 return !unspent.spent
17757 }).map(function (unspent) {
17758 return {
17759 address: unspent.address,
17760 confirmations: unspent.confirmations,
17761 index: unspent.index,
17762 txId: unspent.txId,
17763 value: unspent.value,
17764
17765 // FIXME: remove in 2.0.0
17766 hash: unspent.txId,
17767 pending: unspent.pending
17768 }
17769 })
17770 }
17771
17772 Wallet.prototype.setUnspentOutputs = function (unspents) {
17773 this.unspentMap = {}
17774 this.unspents = unspents.map(function (unspent) {
17775 // FIXME: remove unspent.hash in 2.0.0
17776 var txId = unspent.txId || unspent.hash
17777 var index = unspent.index
17778
17779 // FIXME: remove in 2.0.0
17780 if (unspent.hash !== undefined) {
17781 console.warn('unspent.hash is deprecated, use unspent.txId instead')
17782 }
17783
17784 // FIXME: remove in 2.0.0
17785 if (index === undefined) {
17786 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
17787 index = unspent.outputIndex
17788 }
17789
17790 typeForce('String', txId)
17791 typeForce('Number', index)
17792 typeForce('Number', unspent.value)
17793
17794 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
17795 assert.doesNotThrow(function () {
17796 Address.fromBase58Check(unspent.address)
17797 }, 'Expected Base58 Address, got ' + unspent.address)
17798 assert(isFinite(index), 'Expected finite index, got ' + index)
17799
17800 // FIXME: remove branch in 2.0.0
17801 if (unspent.confirmations !== undefined) {
17802 typeForce('Number', unspent.confirmations)
17803 }
17804
17805 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
17806
17807 unspent = {
17808 address: unspent.address,
17809 confirmations: unspent.confirmations || 0,
17810 index: index,
17811 txHash: txHash,
17812 txId: txId,
17813 value: unspent.value,
17814
17815 // FIXME: remove in 2.0.0
17816 pending: unspent.pending || false
17817 }
17818
17819 // FIXME: remove in 2.0.0
17820 this.unspentMap[txId + ':' + index] = unspent
17821
17822 return unspent
17823 }, this)
17824 }
17825
17826 Wallet.prototype.signWith = function (tx, addresses) {
17827 addresses.forEach(function (address, i) {
17828 var privKey = this.getPrivateKeyForAddress(address)
17829
17830 tx.sign(i, privKey)
17831 }, this)
17832
17833 return tx
17834 }
17835
17836 function estimatePaddedFee (tx, network) {
17837 var tmpTx = tx.clone()
17838 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
17839
17840 return network.estimateFee(tmpTx)
17841 }
17842
17843 // FIXME: 1.0.0 shims, remove in 2.0.0
17844 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
17845 Wallet.prototype.createTx = Wallet.prototype.createTransaction
17846
17847 module.exports = Wallet
17848
17849 }).call(this,require("buffer").Buffer)
17850 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
17851 });</script>
17852 <script>bitcoin.networks.shadow = {
17853 magicPrefix: '\x19ShadowCash Signed Message:\n',
17854 bip32: {
17855 public: 0xEE80286A,
17856 private: 0xEE8031E8
17857 },
17858 pubKeyHash: 0x3f,
17859 scriptHash: 0x7d,
17860 wif: 0xbf,
17861 dustThreshold: 0,
17862 feePerKb: 1000,
17863 estimateFee: function() { return "unused in this app" },
17864 };
17865
17866 bitcoin.networks.shadowtn = {
17867 magicPrefix: '\x19ShadowCash Signed Message:\n',
17868 bip32: {
17869 public: 0x76C0FDFB,
17870 private: 0x76C1077A
17871 },
17872 pubKeyHash: 0x7f,
17873 scriptHash: 0xc4,
17874 wif: 0xff,
17875 dustThreshold: 0,
17876 feePerKb: 1000,
17877 estimateFee: function() { return "unused in this app" },
17878 };
17879
17880 bitcoin.networks.clam = {
17881 bip32: {
17882 public: 0xa8c26d64,
17883 private: 0xa8c17826
17884 },
17885 pubKeyHash: 0x89,
17886 wif: 0x85,
17887 };
17888
17889 bitcoin.networks.dash = {
17890 bip32: {
17891 public: 0x0488b21e,
17892 private: 0x0488ade4
17893 },
17894 pubKeyHash: 0x4c,
17895 scriptHash: 0x10,
17896 wif: 0xcc,
17897 };
17898
17899 bitcoin.networks.namecoin = {
17900 bip32: {
17901 public: 0x0488b21e,
17902 private: 0x0488ade4
17903 },
17904 pubKeyHash: 0x34,
17905 //scriptHash: 0x10,
17906 wif: 0x80,
17907 };
17908
17909 bitcoin.networks.peercoin = {
17910 bip32: {
17911 public: 0x0488b21e,
17912 private: 0x0488ade4
17913 },
17914 pubKeyHash: 0x37,
17915 //scriptHash: 0x10,
17916 wif: 0xb7,
17917 };
17918
17919 </script>
17920 <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){
17921 (function (global){
17922 'use strict';
17923
17924 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
17925 // original notice:
17926
17927 /*!
17928 * The buffer module from node.js, for the browser.
17929 *
17930 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
17931 * @license MIT
17932 */
17933 function compare(a, b) {
17934 if (a === b) {
17935 return 0;
17936 }
17937
17938 var x = a.length;
17939 var y = b.length;
17940
17941 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
17942 if (a[i] !== b[i]) {
17943 x = a[i];
17944 y = b[i];
17945 break;
17946 }
17947 }
17948
17949 if (x < y) {
17950 return -1;
17951 }
17952 if (y < x) {
17953 return 1;
17954 }
17955 return 0;
17956 }
17957 function isBuffer(b) {
17958 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
17959 return global.Buffer.isBuffer(b);
17960 }
17961 return !!(b != null && b._isBuffer);
17962 }
17963
17964 // based on node assert, original notice:
17965
17966 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
17967 //
17968 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
17969 //
17970 // Originally from narwhal.js (http://narwhaljs.org)
17971 // Copyright (c) 2009 Thomas Robinson <280north.com>
17972 //
17973 // Permission is hereby granted, free of charge, to any person obtaining a copy
17974 // of this software and associated documentation files (the 'Software'), to
17975 // deal in the Software without restriction, including without limitation the
17976 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17977 // sell copies of the Software, and to permit persons to whom the Software is
17978 // furnished to do so, subject to the following conditions:
17979 //
17980 // The above copyright notice and this permission notice shall be included in
17981 // all copies or substantial portions of the Software.
17982 //
17983 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17984 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17985 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17986 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
17987 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
17988 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17989
17990 var util = require('util/');
17991 var hasOwn = Object.prototype.hasOwnProperty;
17992 var pSlice = Array.prototype.slice;
17993 var functionsHaveNames = (function () {
17994 return function foo() {}.name === 'foo';
17995 }());
17996 function pToString (obj) {
17997 return Object.prototype.toString.call(obj);
17998 }
17999 function isView(arrbuf) {
18000 if (isBuffer(arrbuf)) {
18001 return false;
18002 }
18003 if (typeof global.ArrayBuffer !== 'function') {
18004 return false;
18005 }
18006 if (typeof ArrayBuffer.isView === 'function') {
18007 return ArrayBuffer.isView(arrbuf);
18008 }
18009 if (!arrbuf) {
18010 return false;
18011 }
18012 if (arrbuf instanceof DataView) {
18013 return true;
18014 }
18015 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
18016 return true;
18017 }
18018 return false;
18019 }
18020 // 1. The assert module provides functions that throw
18021 // AssertionError's when particular conditions are not met. The
18022 // assert module must conform to the following interface.
18023
18024 var assert = module.exports = ok;
18025
18026 // 2. The AssertionError is defined in assert.
18027 // new assert.AssertionError({ message: message,
18028 // actual: actual,
18029 // expected: expected })
18030
18031 var regex = /\s*function\s+([^\(\s]*)\s*/;
18032 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
18033 function getName(func) {
18034 if (!util.isFunction(func)) {
18035 return;
18036 }
18037 if (functionsHaveNames) {
18038 return func.name;
18039 }
18040 var str = func.toString();
18041 var match = str.match(regex);
18042 return match && match[1];
18043 }
18044 assert.AssertionError = function AssertionError(options) {
18045 this.name = 'AssertionError';
18046 this.actual = options.actual;
18047 this.expected = options.expected;
18048 this.operator = options.operator;
18049 if (options.message) {
18050 this.message = options.message;
18051 this.generatedMessage = false;
18052 } else {
18053 this.message = getMessage(this);
18054 this.generatedMessage = true;
18055 }
18056 var stackStartFunction = options.stackStartFunction || fail;
18057 if (Error.captureStackTrace) {
18058 Error.captureStackTrace(this, stackStartFunction);
18059 } else {
18060 // non v8 browsers so we can have a stacktrace
18061 var err = new Error();
18062 if (err.stack) {
18063 var out = err.stack;
18064
18065 // try to strip useless frames
18066 var fn_name = getName(stackStartFunction);
18067 var idx = out.indexOf('\n' + fn_name);
18068 if (idx >= 0) {
18069 // once we have located the function frame
18070 // we need to strip out everything before it (and its line)
18071 var next_line = out.indexOf('\n', idx + 1);
18072 out = out.substring(next_line + 1);
18073 }
18074
18075 this.stack = out;
18076 }
18077 }
18078 };
18079
18080 // assert.AssertionError instanceof Error
18081 util.inherits(assert.AssertionError, Error);
18082
18083 function truncate(s, n) {
18084 if (typeof s === 'string') {
18085 return s.length < n ? s : s.slice(0, n);
18086 } else {
18087 return s;
18088 }
18089 }
18090 function inspect(something) {
18091 if (functionsHaveNames || !util.isFunction(something)) {
18092 return util.inspect(something);
18093 }
18094 var rawname = getName(something);
18095 var name = rawname ? ': ' + rawname : '';
18096 return '[Function' + name + ']';
18097 }
18098 function getMessage(self) {
18099 return truncate(inspect(self.actual), 128) + ' ' +
18100 self.operator + ' ' +
18101 truncate(inspect(self.expected), 128);
18102 }
18103
18104 // At present only the three keys mentioned above are used and
18105 // understood by the spec. Implementations or sub modules can pass
18106 // other keys to the AssertionError's constructor - they will be
18107 // ignored.
18108
18109 // 3. All of the following functions must throw an AssertionError
18110 // when a corresponding condition is not met, with a message that
18111 // may be undefined if not provided. All assertion methods provide
18112 // both the actual and expected values to the assertion error for
18113 // display purposes.
18114
18115 function fail(actual, expected, message, operator, stackStartFunction) {
18116 throw new assert.AssertionError({
18117 message: message,
18118 actual: actual,
18119 expected: expected,
18120 operator: operator,
18121 stackStartFunction: stackStartFunction
18122 });
18123 }
18124
18125 // EXTENSION! allows for well behaved errors defined elsewhere.
18126 assert.fail = fail;
18127
18128 // 4. Pure assertion tests whether a value is truthy, as determined
18129 // by !!guard.
18130 // assert.ok(guard, message_opt);
18131 // This statement is equivalent to assert.equal(true, !!guard,
18132 // message_opt);. To test strictly for the value true, use
18133 // assert.strictEqual(true, guard, message_opt);.
18134
18135 function ok(value, message) {
18136 if (!value) fail(value, true, message, '==', assert.ok);
18137 }
18138 assert.ok = ok;
18139
18140 // 5. The equality assertion tests shallow, coercive equality with
18141 // ==.
18142 // assert.equal(actual, expected, message_opt);
18143
18144 assert.equal = function equal(actual, expected, message) {
18145 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
18146 };
18147
18148 // 6. The non-equality assertion tests for whether two objects are not equal
18149 // with != assert.notEqual(actual, expected, message_opt);
18150
18151 assert.notEqual = function notEqual(actual, expected, message) {
18152 if (actual == expected) {
18153 fail(actual, expected, message, '!=', assert.notEqual);
18154 }
18155 };
18156
18157 // 7. The equivalence assertion tests a deep equality relation.
18158 // assert.deepEqual(actual, expected, message_opt);
18159
18160 assert.deepEqual = function deepEqual(actual, expected, message) {
18161 if (!_deepEqual(actual, expected, false)) {
18162 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
18163 }
18164 };
18165
18166 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
18167 if (!_deepEqual(actual, expected, true)) {
18168 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
18169 }
18170 };
18171
18172 function _deepEqual(actual, expected, strict, memos) {
18173 // 7.1. All identical values are equivalent, as determined by ===.
18174 if (actual === expected) {
18175 return true;
18176 } else if (isBuffer(actual) && isBuffer(expected)) {
18177 return compare(actual, expected) === 0;
18178
18179 // 7.2. If the expected value is a Date object, the actual value is
18180 // equivalent if it is also a Date object that refers to the same time.
18181 } else if (util.isDate(actual) && util.isDate(expected)) {
18182 return actual.getTime() === expected.getTime();
18183
18184 // 7.3 If the expected value is a RegExp object, the actual value is
18185 // equivalent if it is also a RegExp object with the same source and
18186 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
18187 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
18188 return actual.source === expected.source &&
18189 actual.global === expected.global &&
18190 actual.multiline === expected.multiline &&
18191 actual.lastIndex === expected.lastIndex &&
18192 actual.ignoreCase === expected.ignoreCase;
18193
18194 // 7.4. Other pairs that do not both pass typeof value == 'object',
18195 // equivalence is determined by ==.
18196 } else if ((actual === null || typeof actual !== 'object') &&
18197 (expected === null || typeof expected !== 'object')) {
18198 return strict ? actual === expected : actual == expected;
18199
18200 // If both values are instances of typed arrays, wrap their underlying
18201 // ArrayBuffers in a Buffer each to increase performance
18202 // This optimization requires the arrays to have the same type as checked by
18203 // Object.prototype.toString (aka pToString). Never perform binary
18204 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
18205 // bit patterns are not identical.
18206 } else if (isView(actual) && isView(expected) &&
18207 pToString(actual) === pToString(expected) &&
18208 !(actual instanceof Float32Array ||
18209 actual instanceof Float64Array)) {
18210 return compare(new Uint8Array(actual.buffer),
18211 new Uint8Array(expected.buffer)) === 0;
18212
18213 // 7.5 For all other Object pairs, including Array objects, equivalence is
18214 // determined by having the same number of owned properties (as verified
18215 // with Object.prototype.hasOwnProperty.call), the same set of keys
18216 // (although not necessarily the same order), equivalent values for every
18217 // corresponding key, and an identical 'prototype' property. Note: this
18218 // accounts for both named and indexed properties on Arrays.
18219 } else if (isBuffer(actual) !== isBuffer(expected)) {
18220 return false;
18221 } else {
18222 memos = memos || {actual: [], expected: []};
18223
18224 var actualIndex = memos.actual.indexOf(actual);
18225 if (actualIndex !== -1) {
18226 if (actualIndex === memos.expected.indexOf(expected)) {
18227 return true;
18228 }
18229 }
18230
18231 memos.actual.push(actual);
18232 memos.expected.push(expected);
18233
18234 return objEquiv(actual, expected, strict, memos);
18235 }
18236 }
18237
18238 function isArguments(object) {
18239 return Object.prototype.toString.call(object) == '[object Arguments]';
18240 }
18241
18242 function objEquiv(a, b, strict, actualVisitedObjects) {
18243 if (a === null || a === undefined || b === null || b === undefined)
18244 return false;
18245 // if one is a primitive, the other must be same
18246 if (util.isPrimitive(a) || util.isPrimitive(b))
18247 return a === b;
18248 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
18249 return false;
18250 var aIsArgs = isArguments(a);
18251 var bIsArgs = isArguments(b);
18252 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
18253 return false;
18254 if (aIsArgs) {
18255 a = pSlice.call(a);
18256 b = pSlice.call(b);
18257 return _deepEqual(a, b, strict);
18258 }
18259 var ka = objectKeys(a);
18260 var kb = objectKeys(b);
18261 var key, i;
18262 // having the same number of owned properties (keys incorporates
18263 // hasOwnProperty)
18264 if (ka.length !== kb.length)
18265 return false;
18266 //the same set of keys (although not necessarily the same order),
18267 ka.sort();
18268 kb.sort();
18269 //~~~cheap key test
18270 for (i = ka.length - 1; i >= 0; i--) {
18271 if (ka[i] !== kb[i])
18272 return false;
18273 }
18274 //equivalent values for every corresponding key, and
18275 //~~~possibly expensive deep test
18276 for (i = ka.length - 1; i >= 0; i--) {
18277 key = ka[i];
18278 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
18279 return false;
18280 }
18281 return true;
18282 }
18283
18284 // 8. The non-equivalence assertion tests for any deep inequality.
18285 // assert.notDeepEqual(actual, expected, message_opt);
18286
18287 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
18288 if (_deepEqual(actual, expected, false)) {
18289 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
18290 }
18291 };
18292
18293 assert.notDeepStrictEqual = notDeepStrictEqual;
18294 function notDeepStrictEqual(actual, expected, message) {
18295 if (_deepEqual(actual, expected, true)) {
18296 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
18297 }
18298 }
18299
18300
18301 // 9. The strict equality assertion tests strict equality, as determined by ===.
18302 // assert.strictEqual(actual, expected, message_opt);
18303
18304 assert.strictEqual = function strictEqual(actual, expected, message) {
18305 if (actual !== expected) {
18306 fail(actual, expected, message, '===', assert.strictEqual);
18307 }
18308 };
18309
18310 // 10. The strict non-equality assertion tests for strict inequality, as
18311 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
18312
18313 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
18314 if (actual === expected) {
18315 fail(actual, expected, message, '!==', assert.notStrictEqual);
18316 }
18317 };
18318
18319 function expectedException(actual, expected) {
18320 if (!actual || !expected) {
18321 return false;
18322 }
18323
18324 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
18325 return expected.test(actual);
18326 }
18327
18328 try {
18329 if (actual instanceof expected) {
18330 return true;
18331 }
18332 } catch (e) {
18333 // Ignore. The instanceof check doesn't work for arrow functions.
18334 }
18335
18336 if (Error.isPrototypeOf(expected)) {
18337 return false;
18338 }
18339
18340 return expected.call({}, actual) === true;
18341 }
18342
18343 function _tryBlock(block) {
18344 var error;
18345 try {
18346 block();
18347 } catch (e) {
18348 error = e;
18349 }
18350 return error;
18351 }
18352
18353 function _throws(shouldThrow, block, expected, message) {
18354 var actual;
18355
18356 if (typeof block !== 'function') {
18357 throw new TypeError('"block" argument must be a function');
18358 }
18359
18360 if (typeof expected === 'string') {
18361 message = expected;
18362 expected = null;
18363 }
18364
18365 actual = _tryBlock(block);
18366
18367 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
18368 (message ? ' ' + message : '.');
18369
18370 if (shouldThrow && !actual) {
18371 fail(actual, expected, 'Missing expected exception' + message);
18372 }
18373
18374 var userProvidedMessage = typeof message === 'string';
18375 var isUnwantedException = !shouldThrow && util.isError(actual);
18376 var isUnexpectedException = !shouldThrow && actual && !expected;
18377
18378 if ((isUnwantedException &&
18379 userProvidedMessage &&
18380 expectedException(actual, expected)) ||
18381 isUnexpectedException) {
18382 fail(actual, expected, 'Got unwanted exception' + message);
18383 }
18384
18385 if ((shouldThrow && actual && expected &&
18386 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
18387 throw actual;
18388 }
18389 }
18390
18391 // 11. Expected to throw an error:
18392 // assert.throws(block, Error_opt, message_opt);
18393
18394 assert.throws = function(block, /*optional*/error, /*optional*/message) {
18395 _throws(true, block, error, message);
18396 };
18397
18398 // EXTENSION! This is annoying to write outside this module.
18399 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
18400 _throws(false, block, error, message);
18401 };
18402
18403 assert.ifError = function(err) { if (err) throw err; };
18404
18405 var objectKeys = Object.keys || function (obj) {
18406 var keys = [];
18407 for (var key in obj) {
18408 if (hasOwn.call(obj, key)) keys.push(key);
18409 }
18410 return keys;
18411 };
18412
18413 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
18414 },{"util/":30}],2:[function(require,module,exports){
18415 'use strict'
18416
18417 exports.byteLength = byteLength
18418 exports.toByteArray = toByteArray
18419 exports.fromByteArray = fromByteArray
18420
18421 var lookup = []
18422 var revLookup = []
18423 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
18424
18425 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
18426 for (var i = 0, len = code.length; i < len; ++i) {
18427 lookup[i] = code[i]
18428 revLookup[code.charCodeAt(i)] = i
18429 }
18430
18431 revLookup['-'.charCodeAt(0)] = 62
18432 revLookup['_'.charCodeAt(0)] = 63
18433
18434 function placeHoldersCount (b64) {
18435 var len = b64.length
18436 if (len % 4 > 0) {
18437 throw new Error('Invalid string. Length must be a multiple of 4')
18438 }
18439
18440 // the number of equal signs (place holders)
18441 // if there are two placeholders, than the two characters before it
18442 // represent one byte
18443 // if there is only one, then the three characters before it represent 2 bytes
18444 // this is just a cheap hack to not do indexOf twice
18445 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
18446 }
18447
18448 function byteLength (b64) {
18449 // base64 is 4/3 + up to two characters of the original data
18450 return b64.length * 3 / 4 - placeHoldersCount(b64)
18451 }
18452
18453 function toByteArray (b64) {
18454 var i, j, l, tmp, placeHolders, arr
18455 var len = b64.length
18456 placeHolders = placeHoldersCount(b64)
18457
18458 arr = new Arr(len * 3 / 4 - placeHolders)
18459
18460 // if there are placeholders, only get up to the last complete 4 chars
18461 l = placeHolders > 0 ? len - 4 : len
18462
18463 var L = 0
18464
18465 for (i = 0, j = 0; i < l; i += 4, j += 3) {
18466 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
18467 arr[L++] = (tmp >> 16) & 0xFF
18468 arr[L++] = (tmp >> 8) & 0xFF
18469 arr[L++] = tmp & 0xFF
18470 }
18471
18472 if (placeHolders === 2) {
18473 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
18474 arr[L++] = tmp & 0xFF
18475 } else if (placeHolders === 1) {
18476 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
18477 arr[L++] = (tmp >> 8) & 0xFF
18478 arr[L++] = tmp & 0xFF
18479 }
18480
18481 return arr
18482 }
18483
18484 function tripletToBase64 (num) {
18485 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
18486 }
18487
18488 function encodeChunk (uint8, start, end) {
18489 var tmp
18490 var output = []
18491 for (var i = start; i < end; i += 3) {
18492 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
18493 output.push(tripletToBase64(tmp))
18494 }
18495 return output.join('')
18496 }
18497
18498 function fromByteArray (uint8) {
18499 var tmp
18500 var len = uint8.length
18501 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
18502 var output = ''
18503 var parts = []
18504 var maxChunkLength = 16383 // must be multiple of 3
18505
18506 // go through the array every three bytes, we'll deal with trailing stuff later
18507 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
18508 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
18509 }
18510
18511 // pad the end with zeros, but make sure to not forget the extra bytes
18512 if (extraBytes === 1) {
18513 tmp = uint8[len - 1]
18514 output += lookup[tmp >> 2]
18515 output += lookup[(tmp << 4) & 0x3F]
18516 output += '=='
18517 } else if (extraBytes === 2) {
18518 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
18519 output += lookup[tmp >> 10]
18520 output += lookup[(tmp >> 4) & 0x3F]
18521 output += lookup[(tmp << 2) & 0x3F]
18522 output += '='
18523 }
18524
18525 parts.push(output)
18526
18527 return parts.join('')
18528 }
18529
18530 },{}],3:[function(require,module,exports){
18531
18532 },{}],4:[function(require,module,exports){
18533 (function (global){
18534 'use strict';
18535
18536 var buffer = require('buffer');
18537 var Buffer = buffer.Buffer;
18538 var SlowBuffer = buffer.SlowBuffer;
18539 var MAX_LEN = buffer.kMaxLength || 2147483647;
18540 exports.alloc = function alloc(size, fill, encoding) {
18541 if (typeof Buffer.alloc === 'function') {
18542 return Buffer.alloc(size, fill, encoding);
18543 }
18544 if (typeof encoding === 'number') {
18545 throw new TypeError('encoding must not be number');
18546 }
18547 if (typeof size !== 'number') {
18548 throw new TypeError('size must be a number');
18549 }
18550 if (size > MAX_LEN) {
18551 throw new RangeError('size is too large');
18552 }
18553 var enc = encoding;
18554 var _fill = fill;
18555 if (_fill === undefined) {
18556 enc = undefined;
18557 _fill = 0;
18558 }
18559 var buf = new Buffer(size);
18560 if (typeof _fill === 'string') {
18561 var fillBuf = new Buffer(_fill, enc);
18562 var flen = fillBuf.length;
18563 var i = -1;
18564 while (++i < size) {
18565 buf[i] = fillBuf[i % flen];
18566 }
18567 } else {
18568 buf.fill(_fill);
18569 }
18570 return buf;
18571 }
18572 exports.allocUnsafe = function allocUnsafe(size) {
18573 if (typeof Buffer.allocUnsafe === 'function') {
18574 return Buffer.allocUnsafe(size);
18575 }
18576 if (typeof size !== 'number') {
18577 throw new TypeError('size must be a number');
18578 }
18579 if (size > MAX_LEN) {
18580 throw new RangeError('size is too large');
18581 }
18582 return new Buffer(size);
18583 }
18584 exports.from = function from(value, encodingOrOffset, length) {
18585 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
18586 return Buffer.from(value, encodingOrOffset, length);
18587 }
18588 if (typeof value === 'number') {
18589 throw new TypeError('"value" argument must not be a number');
18590 }
18591 if (typeof value === 'string') {
18592 return new Buffer(value, encodingOrOffset);
18593 }
18594 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
18595 var offset = encodingOrOffset;
18596 if (arguments.length === 1) {
18597 return new Buffer(value);
18598 }
18599 if (typeof offset === 'undefined') {
18600 offset = 0;
18601 }
18602 var len = length;
18603 if (typeof len === 'undefined') {
18604 len = value.byteLength - offset;
18605 }
18606 if (offset >= value.byteLength) {
18607 throw new RangeError('\'offset\' is out of bounds');
18608 }
18609 if (len > value.byteLength - offset) {
18610 throw new RangeError('\'length\' is out of bounds');
18611 }
18612 return new Buffer(value.slice(offset, offset + len));
18613 }
18614 if (Buffer.isBuffer(value)) {
18615 var out = new Buffer(value.length);
18616 value.copy(out, 0, 0, value.length);
18617 return out;
18618 }
18619 if (value) {
18620 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
18621 return new Buffer(value);
18622 }
18623 if (value.type === 'Buffer' && Array.isArray(value.data)) {
18624 return new Buffer(value.data);
18625 }
18626 }
18627
18628 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
18629 }
18630 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
18631 if (typeof Buffer.allocUnsafeSlow === 'function') {
18632 return Buffer.allocUnsafeSlow(size);
18633 }
18634 if (typeof size !== 'number') {
18635 throw new TypeError('size must be a number');
18636 }
18637 if (size >= MAX_LEN) {
18638 throw new RangeError('size is too large');
18639 }
18640 return new SlowBuffer(size);
18641 }
18642
18643 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
18644 },{"buffer":5}],5:[function(require,module,exports){
18645 /*!
18646 * The buffer module from node.js, for the browser.
18647 *
18648 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
18649 * @license MIT
18650 */
18651 /* eslint-disable no-proto */
18652
18653 'use strict'
18654
18655 var base64 = require('base64-js')
18656 var ieee754 = require('ieee754')
18657
18658 exports.Buffer = Buffer
18659 exports.SlowBuffer = SlowBuffer
18660 exports.INSPECT_MAX_BYTES = 50
18661
18662 var K_MAX_LENGTH = 0x7fffffff
18663 exports.kMaxLength = K_MAX_LENGTH
18664
18665 /**
18666 * If `Buffer.TYPED_ARRAY_SUPPORT`:
18667 * === true Use Uint8Array implementation (fastest)
18668 * === false Print warning and recommend using `buffer` v4.x which has an Object
18669 * implementation (most compatible, even IE6)
18670 *
18671 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
18672 * Opera 11.6+, iOS 4.2+.
18673 *
18674 * We report that the browser does not support typed arrays if the are not subclassable
18675 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
18676 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
18677 * for __proto__ and has a buggy typed array implementation.
18678 */
18679 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
18680
18681 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
18682 typeof console.error === 'function') {
18683 console.error(
18684 'This browser lacks typed array (Uint8Array) support which is required by ' +
18685 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
18686 )
18687 }
18688
18689 function typedArraySupport () {
18690 // Can typed array instances can be augmented?
18691 try {
18692 var arr = new Uint8Array(1)
18693 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
18694 return arr.foo() === 42
18695 } catch (e) {
18696 return false
18697 }
18698 }
18699
18700 function createBuffer (length) {
18701 if (length > K_MAX_LENGTH) {
18702 throw new RangeError('Invalid typed array length')
18703 }
18704 // Return an augmented `Uint8Array` instance
18705 var buf = new Uint8Array(length)
18706 buf.__proto__ = Buffer.prototype
18707 return buf
18708 }
18709
18710 /**
18711 * The Buffer constructor returns instances of `Uint8Array` that have their
18712 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
18713 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
18714 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
18715 * returns a single octet.
18716 *
18717 * The `Uint8Array` prototype remains unmodified.
18718 */
18719
18720 function Buffer (arg, encodingOrOffset, length) {
18721 // Common case.
18722 if (typeof arg === 'number') {
18723 if (typeof encodingOrOffset === 'string') {
18724 throw new Error(
18725 'If encoding is specified then the first argument must be a string'
18726 )
18727 }
18728 return allocUnsafe(arg)
18729 }
18730 return from(arg, encodingOrOffset, length)
18731 }
18732
18733 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
18734 if (typeof Symbol !== 'undefined' && Symbol.species &&
18735 Buffer[Symbol.species] === Buffer) {
18736 Object.defineProperty(Buffer, Symbol.species, {
18737 value: null,
18738 configurable: true,
18739 enumerable: false,
18740 writable: false
18741 })
18742 }
18743
18744 Buffer.poolSize = 8192 // not used by this implementation
18745
18746 function from (value, encodingOrOffset, length) {
18747 if (typeof value === 'number') {
18748 throw new TypeError('"value" argument must not be a number')
18749 }
18750
18751 if (value instanceof ArrayBuffer) {
18752 return fromArrayBuffer(value, encodingOrOffset, length)
18753 }
18754
18755 if (typeof value === 'string') {
18756 return fromString(value, encodingOrOffset)
18757 }
18758
18759 return fromObject(value)
18760 }
18761
18762 /**
18763 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
18764 * if value is a number.
18765 * Buffer.from(str[, encoding])
18766 * Buffer.from(array)
18767 * Buffer.from(buffer)
18768 * Buffer.from(arrayBuffer[, byteOffset[, length]])
18769 **/
18770 Buffer.from = function (value, encodingOrOffset, length) {
18771 return from(value, encodingOrOffset, length)
18772 }
18773
18774 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
18775 // https://github.com/feross/buffer/pull/148
18776 Buffer.prototype.__proto__ = Uint8Array.prototype
18777 Buffer.__proto__ = Uint8Array
18778
18779 function assertSize (size) {
18780 if (typeof size !== 'number') {
18781 throw new TypeError('"size" argument must be a number')
18782 } else if (size < 0) {
18783 throw new RangeError('"size" argument must not be negative')
18784 }
18785 }
18786
18787 function alloc (size, fill, encoding) {
18788 assertSize(size)
18789 if (size <= 0) {
18790 return createBuffer(size)
18791 }
18792 if (fill !== undefined) {
18793 // Only pay attention to encoding if it's a string. This
18794 // prevents accidentally sending in a number that would
18795 // be interpretted as a start offset.
18796 return typeof encoding === 'string'
18797 ? createBuffer(size).fill(fill, encoding)
18798 : createBuffer(size).fill(fill)
18799 }
18800 return createBuffer(size)
18801 }
18802
18803 /**
18804 * Creates a new filled Buffer instance.
18805 * alloc(size[, fill[, encoding]])
18806 **/
18807 Buffer.alloc = function (size, fill, encoding) {
18808 return alloc(size, fill, encoding)
18809 }
18810
18811 function allocUnsafe (size) {
18812 assertSize(size)
18813 return createBuffer(size < 0 ? 0 : checked(size) | 0)
18814 }
18815
18816 /**
18817 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
18818 * */
18819 Buffer.allocUnsafe = function (size) {
18820 return allocUnsafe(size)
18821 }
18822 /**
18823 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
18824 */
18825 Buffer.allocUnsafeSlow = function (size) {
18826 return allocUnsafe(size)
18827 }
18828
18829 function fromString (string, encoding) {
18830 if (typeof encoding !== 'string' || encoding === '') {
18831 encoding = 'utf8'
18832 }
18833
18834 if (!Buffer.isEncoding(encoding)) {
18835 throw new TypeError('"encoding" must be a valid string encoding')
18836 }
18837
18838 var length = byteLength(string, encoding) | 0
18839 var buf = createBuffer(length)
18840
18841 var actual = buf.write(string, encoding)
18842
18843 if (actual !== length) {
18844 // Writing a hex string, for example, that contains invalid characters will
18845 // cause everything after the first invalid character to be ignored. (e.g.
18846 // 'abxxcd' will be treated as 'ab')
18847 buf = buf.slice(0, actual)
18848 }
18849
18850 return buf
18851 }
18852
18853 function fromArrayLike (array) {
18854 var length = array.length < 0 ? 0 : checked(array.length) | 0
18855 var buf = createBuffer(length)
18856 for (var i = 0; i < length; i += 1) {
18857 buf[i] = array[i] & 255
18858 }
18859 return buf
18860 }
18861
18862 function fromArrayBuffer (array, byteOffset, length) {
18863 if (byteOffset < 0 || array.byteLength < byteOffset) {
18864 throw new RangeError('\'offset\' is out of bounds')
18865 }
18866
18867 if (array.byteLength < byteOffset + (length || 0)) {
18868 throw new RangeError('\'length\' is out of bounds')
18869 }
18870
18871 var buf
18872 if (byteOffset === undefined && length === undefined) {
18873 buf = new Uint8Array(array)
18874 } else if (length === undefined) {
18875 buf = new Uint8Array(array, byteOffset)
18876 } else {
18877 buf = new Uint8Array(array, byteOffset, length)
18878 }
18879
18880 // Return an augmented `Uint8Array` instance
18881 buf.__proto__ = Buffer.prototype
18882 return buf
18883 }
18884
18885 function fromObject (obj) {
18886 if (Buffer.isBuffer(obj)) {
18887 var len = checked(obj.length) | 0
18888 var buf = createBuffer(len)
18889
18890 if (buf.length === 0) {
18891 return buf
18892 }
18893
18894 obj.copy(buf, 0, 0, len)
18895 return buf
18896 }
18897
18898 if (obj) {
18899 if (ArrayBuffer.isView(obj) || 'length' in obj) {
18900 if (typeof obj.length !== 'number' || isnan(obj.length)) {
18901 return createBuffer(0)
18902 }
18903 return fromArrayLike(obj)
18904 }
18905
18906 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
18907 return fromArrayLike(obj.data)
18908 }
18909 }
18910
18911 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
18912 }
18913
18914 function checked (length) {
18915 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
18916 // length is NaN (which is otherwise coerced to zero.)
18917 if (length >= K_MAX_LENGTH) {
18918 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
18919 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
18920 }
18921 return length | 0
18922 }
18923
18924 function SlowBuffer (length) {
18925 if (+length != length) { // eslint-disable-line eqeqeq
18926 length = 0
18927 }
18928 return Buffer.alloc(+length)
18929 }
18930
18931 Buffer.isBuffer = function isBuffer (b) {
18932 return b != null && b._isBuffer === true
18933 }
18934
18935 Buffer.compare = function compare (a, b) {
18936 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
18937 throw new TypeError('Arguments must be Buffers')
18938 }
18939
18940 if (a === b) return 0
18941
18942 var x = a.length
18943 var y = b.length
18944
18945 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
18946 if (a[i] !== b[i]) {
18947 x = a[i]
18948 y = b[i]
18949 break
18950 }
18951 }
18952
18953 if (x < y) return -1
18954 if (y < x) return 1
18955 return 0
18956 }
18957
18958 Buffer.isEncoding = function isEncoding (encoding) {
18959 switch (String(encoding).toLowerCase()) {
18960 case 'hex':
18961 case 'utf8':
18962 case 'utf-8':
18963 case 'ascii':
18964 case 'latin1':
18965 case 'binary':
18966 case 'base64':
18967 case 'ucs2':
18968 case 'ucs-2':
18969 case 'utf16le':
18970 case 'utf-16le':
18971 return true
18972 default:
18973 return false
18974 }
18975 }
18976
18977 Buffer.concat = function concat (list, length) {
18978 if (!Array.isArray(list)) {
18979 throw new TypeError('"list" argument must be an Array of Buffers')
18980 }
18981
18982 if (list.length === 0) {
18983 return Buffer.alloc(0)
18984 }
18985
18986 var i
18987 if (length === undefined) {
18988 length = 0
18989 for (i = 0; i < list.length; ++i) {
18990 length += list[i].length
18991 }
18992 }
18993
18994 var buffer = Buffer.allocUnsafe(length)
18995 var pos = 0
18996 for (i = 0; i < list.length; ++i) {
18997 var buf = list[i]
18998 if (!Buffer.isBuffer(buf)) {
18999 throw new TypeError('"list" argument must be an Array of Buffers')
19000 }
19001 buf.copy(buffer, pos)
19002 pos += buf.length
19003 }
19004 return buffer
19005 }
19006
19007 function byteLength (string, encoding) {
19008 if (Buffer.isBuffer(string)) {
19009 return string.length
19010 }
19011 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
19012 return string.byteLength
19013 }
19014 if (typeof string !== 'string') {
19015 string = '' + string
19016 }
19017
19018 var len = string.length
19019 if (len === 0) return 0
19020
19021 // Use a for loop to avoid recursion
19022 var loweredCase = false
19023 for (;;) {
19024 switch (encoding) {
19025 case 'ascii':
19026 case 'latin1':
19027 case 'binary':
19028 return len
19029 case 'utf8':
19030 case 'utf-8':
19031 case undefined:
19032 return utf8ToBytes(string).length
19033 case 'ucs2':
19034 case 'ucs-2':
19035 case 'utf16le':
19036 case 'utf-16le':
19037 return len * 2
19038 case 'hex':
19039 return len >>> 1
19040 case 'base64':
19041 return base64ToBytes(string).length
19042 default:
19043 if (loweredCase) return utf8ToBytes(string).length // assume utf8
19044 encoding = ('' + encoding).toLowerCase()
19045 loweredCase = true
19046 }
19047 }
19048 }
19049 Buffer.byteLength = byteLength
19050
19051 function slowToString (encoding, start, end) {
19052 var loweredCase = false
19053
19054 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
19055 // property of a typed array.
19056
19057 // This behaves neither like String nor Uint8Array in that we set start/end
19058 // to their upper/lower bounds if the value passed is out of range.
19059 // undefined is handled specially as per ECMA-262 6th Edition,
19060 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
19061 if (start === undefined || start < 0) {
19062 start = 0
19063 }
19064 // Return early if start > this.length. Done here to prevent potential uint32
19065 // coercion fail below.
19066 if (start > this.length) {
19067 return ''
19068 }
19069
19070 if (end === undefined || end > this.length) {
19071 end = this.length
19072 }
19073
19074 if (end <= 0) {
19075 return ''
19076 }
19077
19078 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
19079 end >>>= 0
19080 start >>>= 0
19081
19082 if (end <= start) {
19083 return ''
19084 }
19085
19086 if (!encoding) encoding = 'utf8'
19087
19088 while (true) {
19089 switch (encoding) {
19090 case 'hex':
19091 return hexSlice(this, start, end)
19092
19093 case 'utf8':
19094 case 'utf-8':
19095 return utf8Slice(this, start, end)
19096
19097 case 'ascii':
19098 return asciiSlice(this, start, end)
19099
19100 case 'latin1':
19101 case 'binary':
19102 return latin1Slice(this, start, end)
19103
19104 case 'base64':
19105 return base64Slice(this, start, end)
19106
19107 case 'ucs2':
19108 case 'ucs-2':
19109 case 'utf16le':
19110 case 'utf-16le':
19111 return utf16leSlice(this, start, end)
19112
19113 default:
19114 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
19115 encoding = (encoding + '').toLowerCase()
19116 loweredCase = true
19117 }
19118 }
19119 }
19120
19121 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
19122 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
19123 // reliably in a browserify context because there could be multiple different
19124 // copies of the 'buffer' package in use. This method works even for Buffer
19125 // instances that were created from another copy of the `buffer` package.
19126 // See: https://github.com/feross/buffer/issues/154
19127 Buffer.prototype._isBuffer = true
19128
19129 function swap (b, n, m) {
19130 var i = b[n]
19131 b[n] = b[m]
19132 b[m] = i
19133 }
19134
19135 Buffer.prototype.swap16 = function swap16 () {
19136 var len = this.length
19137 if (len % 2 !== 0) {
19138 throw new RangeError('Buffer size must be a multiple of 16-bits')
19139 }
19140 for (var i = 0; i < len; i += 2) {
19141 swap(this, i, i + 1)
19142 }
19143 return this
19144 }
19145
19146 Buffer.prototype.swap32 = function swap32 () {
19147 var len = this.length
19148 if (len % 4 !== 0) {
19149 throw new RangeError('Buffer size must be a multiple of 32-bits')
19150 }
19151 for (var i = 0; i < len; i += 4) {
19152 swap(this, i, i + 3)
19153 swap(this, i + 1, i + 2)
19154 }
19155 return this
19156 }
19157
19158 Buffer.prototype.swap64 = function swap64 () {
19159 var len = this.length
19160 if (len % 8 !== 0) {
19161 throw new RangeError('Buffer size must be a multiple of 64-bits')
19162 }
19163 for (var i = 0; i < len; i += 8) {
19164 swap(this, i, i + 7)
19165 swap(this, i + 1, i + 6)
19166 swap(this, i + 2, i + 5)
19167 swap(this, i + 3, i + 4)
19168 }
19169 return this
19170 }
19171
19172 Buffer.prototype.toString = function toString () {
19173 var length = this.length
19174 if (length === 0) return ''
19175 if (arguments.length === 0) return utf8Slice(this, 0, length)
19176 return slowToString.apply(this, arguments)
19177 }
19178
19179 Buffer.prototype.equals = function equals (b) {
19180 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
19181 if (this === b) return true
19182 return Buffer.compare(this, b) === 0
19183 }
19184
19185 Buffer.prototype.inspect = function inspect () {
19186 var str = ''
19187 var max = exports.INSPECT_MAX_BYTES
19188 if (this.length > 0) {
19189 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
19190 if (this.length > max) str += ' ... '
19191 }
19192 return '<Buffer ' + str + '>'
19193 }
19194
19195 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
19196 if (!Buffer.isBuffer(target)) {
19197 throw new TypeError('Argument must be a Buffer')
19198 }
19199
19200 if (start === undefined) {
19201 start = 0
19202 }
19203 if (end === undefined) {
19204 end = target ? target.length : 0
19205 }
19206 if (thisStart === undefined) {
19207 thisStart = 0
19208 }
19209 if (thisEnd === undefined) {
19210 thisEnd = this.length
19211 }
19212
19213 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
19214 throw new RangeError('out of range index')
19215 }
19216
19217 if (thisStart >= thisEnd && start >= end) {
19218 return 0
19219 }
19220 if (thisStart >= thisEnd) {
19221 return -1
19222 }
19223 if (start >= end) {
19224 return 1
19225 }
19226
19227 start >>>= 0
19228 end >>>= 0
19229 thisStart >>>= 0
19230 thisEnd >>>= 0
19231
19232 if (this === target) return 0
19233
19234 var x = thisEnd - thisStart
19235 var y = end - start
19236 var len = Math.min(x, y)
19237
19238 var thisCopy = this.slice(thisStart, thisEnd)
19239 var targetCopy = target.slice(start, end)
19240
19241 for (var i = 0; i < len; ++i) {
19242 if (thisCopy[i] !== targetCopy[i]) {
19243 x = thisCopy[i]
19244 y = targetCopy[i]
19245 break
19246 }
19247 }
19248
19249 if (x < y) return -1
19250 if (y < x) return 1
19251 return 0
19252 }
19253
19254 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
19255 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
19256 //
19257 // Arguments:
19258 // - buffer - a Buffer to search
19259 // - val - a string, Buffer, or number
19260 // - byteOffset - an index into `buffer`; will be clamped to an int32
19261 // - encoding - an optional encoding, relevant is val is a string
19262 // - dir - true for indexOf, false for lastIndexOf
19263 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
19264 // Empty buffer means no match
19265 if (buffer.length === 0) return -1
19266
19267 // Normalize byteOffset
19268 if (typeof byteOffset === 'string') {
19269 encoding = byteOffset
19270 byteOffset = 0
19271 } else if (byteOffset > 0x7fffffff) {
19272 byteOffset = 0x7fffffff
19273 } else if (byteOffset < -0x80000000) {
19274 byteOffset = -0x80000000
19275 }
19276 byteOffset = +byteOffset // Coerce to Number.
19277 if (isNaN(byteOffset)) {
19278 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
19279 byteOffset = dir ? 0 : (buffer.length - 1)
19280 }
19281
19282 // Normalize byteOffset: negative offsets start from the end of the buffer
19283 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
19284 if (byteOffset >= buffer.length) {
19285 if (dir) return -1
19286 else byteOffset = buffer.length - 1
19287 } else if (byteOffset < 0) {
19288 if (dir) byteOffset = 0
19289 else return -1
19290 }
19291
19292 // Normalize val
19293 if (typeof val === 'string') {
19294 val = Buffer.from(val, encoding)
19295 }
19296
19297 // Finally, search either indexOf (if dir is true) or lastIndexOf
19298 if (Buffer.isBuffer(val)) {
19299 // Special case: looking for empty string/buffer always fails
19300 if (val.length === 0) {
19301 return -1
19302 }
19303 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
19304 } else if (typeof val === 'number') {
19305 val = val & 0xFF // Search for a byte value [0-255]
19306 if (typeof Uint8Array.prototype.indexOf === 'function') {
19307 if (dir) {
19308 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
19309 } else {
19310 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
19311 }
19312 }
19313 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
19314 }
19315
19316 throw new TypeError('val must be string, number or Buffer')
19317 }
19318
19319 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
19320 var indexSize = 1
19321 var arrLength = arr.length
19322 var valLength = val.length
19323
19324 if (encoding !== undefined) {
19325 encoding = String(encoding).toLowerCase()
19326 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
19327 encoding === 'utf16le' || encoding === 'utf-16le') {
19328 if (arr.length < 2 || val.length < 2) {
19329 return -1
19330 }
19331 indexSize = 2
19332 arrLength /= 2
19333 valLength /= 2
19334 byteOffset /= 2
19335 }
19336 }
19337
19338 function read (buf, i) {
19339 if (indexSize === 1) {
19340 return buf[i]
19341 } else {
19342 return buf.readUInt16BE(i * indexSize)
19343 }
19344 }
19345
19346 var i
19347 if (dir) {
19348 var foundIndex = -1
19349 for (i = byteOffset; i < arrLength; i++) {
19350 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
19351 if (foundIndex === -1) foundIndex = i
19352 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
19353 } else {
19354 if (foundIndex !== -1) i -= i - foundIndex
19355 foundIndex = -1
19356 }
19357 }
19358 } else {
19359 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
19360 for (i = byteOffset; i >= 0; i--) {
19361 var found = true
19362 for (var j = 0; j < valLength; j++) {
19363 if (read(arr, i + j) !== read(val, j)) {
19364 found = false
19365 break
19366 }
19367 }
19368 if (found) return i
19369 }
19370 }
19371
19372 return -1
19373 }
19374
19375 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
19376 return this.indexOf(val, byteOffset, encoding) !== -1
19377 }
19378
19379 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
19380 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
19381 }
19382
19383 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
19384 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
19385 }
19386
19387 function hexWrite (buf, string, offset, length) {
19388 offset = Number(offset) || 0
19389 var remaining = buf.length - offset
19390 if (!length) {
19391 length = remaining
19392 } else {
19393 length = Number(length)
19394 if (length > remaining) {
19395 length = remaining
19396 }
19397 }
19398
19399 // must be an even number of digits
19400 var strLen = string.length
19401 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
19402
19403 if (length > strLen / 2) {
19404 length = strLen / 2
19405 }
19406 for (var i = 0; i < length; ++i) {
19407 var parsed = parseInt(string.substr(i * 2, 2), 16)
19408 if (isNaN(parsed)) return i
19409 buf[offset + i] = parsed
19410 }
19411 return i
19412 }
19413
19414 function utf8Write (buf, string, offset, length) {
19415 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
19416 }
19417
19418 function asciiWrite (buf, string, offset, length) {
19419 return blitBuffer(asciiToBytes(string), buf, offset, length)
19420 }
19421
19422 function latin1Write (buf, string, offset, length) {
19423 return asciiWrite(buf, string, offset, length)
19424 }
19425
19426 function base64Write (buf, string, offset, length) {
19427 return blitBuffer(base64ToBytes(string), buf, offset, length)
19428 }
19429
19430 function ucs2Write (buf, string, offset, length) {
19431 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
19432 }
19433
19434 Buffer.prototype.write = function write (string, offset, length, encoding) {
19435 // Buffer#write(string)
19436 if (offset === undefined) {
19437 encoding = 'utf8'
19438 length = this.length
19439 offset = 0
19440 // Buffer#write(string, encoding)
19441 } else if (length === undefined && typeof offset === 'string') {
19442 encoding = offset
19443 length = this.length
19444 offset = 0
19445 // Buffer#write(string, offset[, length][, encoding])
19446 } else if (isFinite(offset)) {
19447 offset = offset >>> 0
19448 if (isFinite(length)) {
19449 length = length >>> 0
19450 if (encoding === undefined) encoding = 'utf8'
19451 } else {
19452 encoding = length
19453 length = undefined
19454 }
19455 } else {
19456 throw new Error(
19457 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
19458 )
19459 }
19460
19461 var remaining = this.length - offset
19462 if (length === undefined || length > remaining) length = remaining
19463
19464 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
19465 throw new RangeError('Attempt to write outside buffer bounds')
19466 }
19467
19468 if (!encoding) encoding = 'utf8'
19469
19470 var loweredCase = false
19471 for (;;) {
19472 switch (encoding) {
19473 case 'hex':
19474 return hexWrite(this, string, offset, length)
19475
19476 case 'utf8':
19477 case 'utf-8':
19478 return utf8Write(this, string, offset, length)
19479
19480 case 'ascii':
19481 return asciiWrite(this, string, offset, length)
19482
19483 case 'latin1':
19484 case 'binary':
19485 return latin1Write(this, string, offset, length)
19486
19487 case 'base64':
19488 // Warning: maxLength not taken into account in base64Write
19489 return base64Write(this, string, offset, length)
19490
19491 case 'ucs2':
19492 case 'ucs-2':
19493 case 'utf16le':
19494 case 'utf-16le':
19495 return ucs2Write(this, string, offset, length)
19496
19497 default:
19498 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
19499 encoding = ('' + encoding).toLowerCase()
19500 loweredCase = true
19501 }
19502 }
19503 }
19504
19505 Buffer.prototype.toJSON = function toJSON () {
19506 return {
19507 type: 'Buffer',
19508 data: Array.prototype.slice.call(this._arr || this, 0)
19509 }
19510 }
19511
19512 function base64Slice (buf, start, end) {
19513 if (start === 0 && end === buf.length) {
19514 return base64.fromByteArray(buf)
19515 } else {
19516 return base64.fromByteArray(buf.slice(start, end))
19517 }
19518 }
19519
19520 function utf8Slice (buf, start, end) {
19521 end = Math.min(buf.length, end)
19522 var res = []
19523
19524 var i = start
19525 while (i < end) {
19526 var firstByte = buf[i]
19527 var codePoint = null
19528 var bytesPerSequence = (firstByte > 0xEF) ? 4
19529 : (firstByte > 0xDF) ? 3
19530 : (firstByte > 0xBF) ? 2
19531 : 1
19532
19533 if (i + bytesPerSequence <= end) {
19534 var secondByte, thirdByte, fourthByte, tempCodePoint
19535
19536 switch (bytesPerSequence) {
19537 case 1:
19538 if (firstByte < 0x80) {
19539 codePoint = firstByte
19540 }
19541 break
19542 case 2:
19543 secondByte = buf[i + 1]
19544 if ((secondByte & 0xC0) === 0x80) {
19545 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
19546 if (tempCodePoint > 0x7F) {
19547 codePoint = tempCodePoint
19548 }
19549 }
19550 break
19551 case 3:
19552 secondByte = buf[i + 1]
19553 thirdByte = buf[i + 2]
19554 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
19555 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
19556 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
19557 codePoint = tempCodePoint
19558 }
19559 }
19560 break
19561 case 4:
19562 secondByte = buf[i + 1]
19563 thirdByte = buf[i + 2]
19564 fourthByte = buf[i + 3]
19565 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
19566 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
19567 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
19568 codePoint = tempCodePoint
19569 }
19570 }
19571 }
19572 }
19573
19574 if (codePoint === null) {
19575 // we did not generate a valid codePoint so insert a
19576 // replacement char (U+FFFD) and advance only 1 byte
19577 codePoint = 0xFFFD
19578 bytesPerSequence = 1
19579 } else if (codePoint > 0xFFFF) {
19580 // encode to utf16 (surrogate pair dance)
19581 codePoint -= 0x10000
19582 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
19583 codePoint = 0xDC00 | codePoint & 0x3FF
19584 }
19585
19586 res.push(codePoint)
19587 i += bytesPerSequence
19588 }
19589
19590 return decodeCodePointsArray(res)
19591 }
19592
19593 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
19594 // the lowest limit is Chrome, with 0x10000 args.
19595 // We go 1 magnitude less, for safety
19596 var MAX_ARGUMENTS_LENGTH = 0x1000
19597
19598 function decodeCodePointsArray (codePoints) {
19599 var len = codePoints.length
19600 if (len <= MAX_ARGUMENTS_LENGTH) {
19601 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
19602 }
19603
19604 // Decode in chunks to avoid "call stack size exceeded".
19605 var res = ''
19606 var i = 0
19607 while (i < len) {
19608 res += String.fromCharCode.apply(
19609 String,
19610 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
19611 )
19612 }
19613 return res
19614 }
19615
19616 function asciiSlice (buf, start, end) {
19617 var ret = ''
19618 end = Math.min(buf.length, end)
19619
19620 for (var i = start; i < end; ++i) {
19621 ret += String.fromCharCode(buf[i] & 0x7F)
19622 }
19623 return ret
19624 }
19625
19626 function latin1Slice (buf, start, end) {
19627 var ret = ''
19628 end = Math.min(buf.length, end)
19629
19630 for (var i = start; i < end; ++i) {
19631 ret += String.fromCharCode(buf[i])
19632 }
19633 return ret
19634 }
19635
19636 function hexSlice (buf, start, end) {
19637 var len = buf.length
19638
19639 if (!start || start < 0) start = 0
19640 if (!end || end < 0 || end > len) end = len
19641
19642 var out = ''
19643 for (var i = start; i < end; ++i) {
19644 out += toHex(buf[i])
19645 }
19646 return out
19647 }
19648
19649 function utf16leSlice (buf, start, end) {
19650 var bytes = buf.slice(start, end)
19651 var res = ''
19652 for (var i = 0; i < bytes.length; i += 2) {
19653 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
19654 }
19655 return res
19656 }
19657
19658 Buffer.prototype.slice = function slice (start, end) {
19659 var len = this.length
19660 start = ~~start
19661 end = end === undefined ? len : ~~end
19662
19663 if (start < 0) {
19664 start += len
19665 if (start < 0) start = 0
19666 } else if (start > len) {
19667 start = len
19668 }
19669
19670 if (end < 0) {
19671 end += len
19672 if (end < 0) end = 0
19673 } else if (end > len) {
19674 end = len
19675 }
19676
19677 if (end < start) end = start
19678
19679 var newBuf = this.subarray(start, end)
19680 // Return an augmented `Uint8Array` instance
19681 newBuf.__proto__ = Buffer.prototype
19682 return newBuf
19683 }
19684
19685 /*
19686 * Need to make sure that buffer isn't trying to write out of bounds.
19687 */
19688 function checkOffset (offset, ext, length) {
19689 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
19690 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
19691 }
19692
19693 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
19694 offset = offset >>> 0
19695 byteLength = byteLength >>> 0
19696 if (!noAssert) checkOffset(offset, byteLength, this.length)
19697
19698 var val = this[offset]
19699 var mul = 1
19700 var i = 0
19701 while (++i < byteLength && (mul *= 0x100)) {
19702 val += this[offset + i] * mul
19703 }
19704
19705 return val
19706 }
19707
19708 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
19709 offset = offset >>> 0
19710 byteLength = byteLength >>> 0
19711 if (!noAssert) {
19712 checkOffset(offset, byteLength, this.length)
19713 }
19714
19715 var val = this[offset + --byteLength]
19716 var mul = 1
19717 while (byteLength > 0 && (mul *= 0x100)) {
19718 val += this[offset + --byteLength] * mul
19719 }
19720
19721 return val
19722 }
19723
19724 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
19725 offset = offset >>> 0
19726 if (!noAssert) checkOffset(offset, 1, this.length)
19727 return this[offset]
19728 }
19729
19730 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
19731 offset = offset >>> 0
19732 if (!noAssert) checkOffset(offset, 2, this.length)
19733 return this[offset] | (this[offset + 1] << 8)
19734 }
19735
19736 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
19737 offset = offset >>> 0
19738 if (!noAssert) checkOffset(offset, 2, this.length)
19739 return (this[offset] << 8) | this[offset + 1]
19740 }
19741
19742 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
19743 offset = offset >>> 0
19744 if (!noAssert) checkOffset(offset, 4, this.length)
19745
19746 return ((this[offset]) |
19747 (this[offset + 1] << 8) |
19748 (this[offset + 2] << 16)) +
19749 (this[offset + 3] * 0x1000000)
19750 }
19751
19752 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
19753 offset = offset >>> 0
19754 if (!noAssert) checkOffset(offset, 4, this.length)
19755
19756 return (this[offset] * 0x1000000) +
19757 ((this[offset + 1] << 16) |
19758 (this[offset + 2] << 8) |
19759 this[offset + 3])
19760 }
19761
19762 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
19763 offset = offset >>> 0
19764 byteLength = byteLength >>> 0
19765 if (!noAssert) checkOffset(offset, byteLength, this.length)
19766
19767 var val = this[offset]
19768 var mul = 1
19769 var i = 0
19770 while (++i < byteLength && (mul *= 0x100)) {
19771 val += this[offset + i] * mul
19772 }
19773 mul *= 0x80
19774
19775 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
19776
19777 return val
19778 }
19779
19780 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
19781 offset = offset >>> 0
19782 byteLength = byteLength >>> 0
19783 if (!noAssert) checkOffset(offset, byteLength, this.length)
19784
19785 var i = byteLength
19786 var mul = 1
19787 var val = this[offset + --i]
19788 while (i > 0 && (mul *= 0x100)) {
19789 val += this[offset + --i] * mul
19790 }
19791 mul *= 0x80
19792
19793 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
19794
19795 return val
19796 }
19797
19798 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
19799 offset = offset >>> 0
19800 if (!noAssert) checkOffset(offset, 1, this.length)
19801 if (!(this[offset] & 0x80)) return (this[offset])
19802 return ((0xff - this[offset] + 1) * -1)
19803 }
19804
19805 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
19806 offset = offset >>> 0
19807 if (!noAssert) checkOffset(offset, 2, this.length)
19808 var val = this[offset] | (this[offset + 1] << 8)
19809 return (val & 0x8000) ? val | 0xFFFF0000 : val
19810 }
19811
19812 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
19813 offset = offset >>> 0
19814 if (!noAssert) checkOffset(offset, 2, this.length)
19815 var val = this[offset + 1] | (this[offset] << 8)
19816 return (val & 0x8000) ? val | 0xFFFF0000 : val
19817 }
19818
19819 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
19820 offset = offset >>> 0
19821 if (!noAssert) checkOffset(offset, 4, this.length)
19822
19823 return (this[offset]) |
19824 (this[offset + 1] << 8) |
19825 (this[offset + 2] << 16) |
19826 (this[offset + 3] << 24)
19827 }
19828
19829 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
19830 offset = offset >>> 0
19831 if (!noAssert) checkOffset(offset, 4, this.length)
19832
19833 return (this[offset] << 24) |
19834 (this[offset + 1] << 16) |
19835 (this[offset + 2] << 8) |
19836 (this[offset + 3])
19837 }
19838
19839 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
19840 offset = offset >>> 0
19841 if (!noAssert) checkOffset(offset, 4, this.length)
19842 return ieee754.read(this, offset, true, 23, 4)
19843 }
19844
19845 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
19846 offset = offset >>> 0
19847 if (!noAssert) checkOffset(offset, 4, this.length)
19848 return ieee754.read(this, offset, false, 23, 4)
19849 }
19850
19851 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
19852 offset = offset >>> 0
19853 if (!noAssert) checkOffset(offset, 8, this.length)
19854 return ieee754.read(this, offset, true, 52, 8)
19855 }
19856
19857 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
19858 offset = offset >>> 0
19859 if (!noAssert) checkOffset(offset, 8, this.length)
19860 return ieee754.read(this, offset, false, 52, 8)
19861 }
19862
19863 function checkInt (buf, value, offset, ext, max, min) {
19864 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
19865 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
19866 if (offset + ext > buf.length) throw new RangeError('Index out of range')
19867 }
19868
19869 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
19870 value = +value
19871 offset = offset >>> 0
19872 byteLength = byteLength >>> 0
19873 if (!noAssert) {
19874 var maxBytes = Math.pow(2, 8 * byteLength) - 1
19875 checkInt(this, value, offset, byteLength, maxBytes, 0)
19876 }
19877
19878 var mul = 1
19879 var i = 0
19880 this[offset] = value & 0xFF
19881 while (++i < byteLength && (mul *= 0x100)) {
19882 this[offset + i] = (value / mul) & 0xFF
19883 }
19884
19885 return offset + byteLength
19886 }
19887
19888 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
19889 value = +value
19890 offset = offset >>> 0
19891 byteLength = byteLength >>> 0
19892 if (!noAssert) {
19893 var maxBytes = Math.pow(2, 8 * byteLength) - 1
19894 checkInt(this, value, offset, byteLength, maxBytes, 0)
19895 }
19896
19897 var i = byteLength - 1
19898 var mul = 1
19899 this[offset + i] = value & 0xFF
19900 while (--i >= 0 && (mul *= 0x100)) {
19901 this[offset + i] = (value / mul) & 0xFF
19902 }
19903
19904 return offset + byteLength
19905 }
19906
19907 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
19908 value = +value
19909 offset = offset >>> 0
19910 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
19911 this[offset] = (value & 0xff)
19912 return offset + 1
19913 }
19914
19915 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
19916 value = +value
19917 offset = offset >>> 0
19918 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
19919 this[offset] = (value & 0xff)
19920 this[offset + 1] = (value >>> 8)
19921 return offset + 2
19922 }
19923
19924 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
19925 value = +value
19926 offset = offset >>> 0
19927 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
19928 this[offset] = (value >>> 8)
19929 this[offset + 1] = (value & 0xff)
19930 return offset + 2
19931 }
19932
19933 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
19934 value = +value
19935 offset = offset >>> 0
19936 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
19937 this[offset + 3] = (value >>> 24)
19938 this[offset + 2] = (value >>> 16)
19939 this[offset + 1] = (value >>> 8)
19940 this[offset] = (value & 0xff)
19941 return offset + 4
19942 }
19943
19944 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
19945 value = +value
19946 offset = offset >>> 0
19947 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
19948 this[offset] = (value >>> 24)
19949 this[offset + 1] = (value >>> 16)
19950 this[offset + 2] = (value >>> 8)
19951 this[offset + 3] = (value & 0xff)
19952 return offset + 4
19953 }
19954
19955 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
19956 value = +value
19957 offset = offset >>> 0
19958 if (!noAssert) {
19959 var limit = Math.pow(2, (8 * byteLength) - 1)
19960
19961 checkInt(this, value, offset, byteLength, limit - 1, -limit)
19962 }
19963
19964 var i = 0
19965 var mul = 1
19966 var sub = 0
19967 this[offset] = value & 0xFF
19968 while (++i < byteLength && (mul *= 0x100)) {
19969 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
19970 sub = 1
19971 }
19972 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
19973 }
19974
19975 return offset + byteLength
19976 }
19977
19978 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
19979 value = +value
19980 offset = offset >>> 0
19981 if (!noAssert) {
19982 var limit = Math.pow(2, (8 * byteLength) - 1)
19983
19984 checkInt(this, value, offset, byteLength, limit - 1, -limit)
19985 }
19986
19987 var i = byteLength - 1
19988 var mul = 1
19989 var sub = 0
19990 this[offset + i] = value & 0xFF
19991 while (--i >= 0 && (mul *= 0x100)) {
19992 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
19993 sub = 1
19994 }
19995 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
19996 }
19997
19998 return offset + byteLength
19999 }
20000
20001 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
20002 value = +value
20003 offset = offset >>> 0
20004 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
20005 if (value < 0) value = 0xff + value + 1
20006 this[offset] = (value & 0xff)
20007 return offset + 1
20008 }
20009
20010 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
20011 value = +value
20012 offset = offset >>> 0
20013 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
20014 this[offset] = (value & 0xff)
20015 this[offset + 1] = (value >>> 8)
20016 return offset + 2
20017 }
20018
20019 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
20020 value = +value
20021 offset = offset >>> 0
20022 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
20023 this[offset] = (value >>> 8)
20024 this[offset + 1] = (value & 0xff)
20025 return offset + 2
20026 }
20027
20028 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
20029 value = +value
20030 offset = offset >>> 0
20031 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
20032 this[offset] = (value & 0xff)
20033 this[offset + 1] = (value >>> 8)
20034 this[offset + 2] = (value >>> 16)
20035 this[offset + 3] = (value >>> 24)
20036 return offset + 4
20037 }
20038
20039 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
20040 value = +value
20041 offset = offset >>> 0
20042 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
20043 if (value < 0) value = 0xffffffff + value + 1
20044 this[offset] = (value >>> 24)
20045 this[offset + 1] = (value >>> 16)
20046 this[offset + 2] = (value >>> 8)
20047 this[offset + 3] = (value & 0xff)
20048 return offset + 4
20049 }
20050
20051 function checkIEEE754 (buf, value, offset, ext, max, min) {
20052 if (offset + ext > buf.length) throw new RangeError('Index out of range')
20053 if (offset < 0) throw new RangeError('Index out of range')
20054 }
20055
20056 function writeFloat (buf, value, offset, littleEndian, noAssert) {
20057 value = +value
20058 offset = offset >>> 0
20059 if (!noAssert) {
20060 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
20061 }
20062 ieee754.write(buf, value, offset, littleEndian, 23, 4)
20063 return offset + 4
20064 }
20065
20066 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
20067 return writeFloat(this, value, offset, true, noAssert)
20068 }
20069
20070 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
20071 return writeFloat(this, value, offset, false, noAssert)
20072 }
20073
20074 function writeDouble (buf, value, offset, littleEndian, noAssert) {
20075 value = +value
20076 offset = offset >>> 0
20077 if (!noAssert) {
20078 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
20079 }
20080 ieee754.write(buf, value, offset, littleEndian, 52, 8)
20081 return offset + 8
20082 }
20083
20084 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
20085 return writeDouble(this, value, offset, true, noAssert)
20086 }
20087
20088 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
20089 return writeDouble(this, value, offset, false, noAssert)
20090 }
20091
20092 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
20093 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
20094 if (!start) start = 0
20095 if (!end && end !== 0) end = this.length
20096 if (targetStart >= target.length) targetStart = target.length
20097 if (!targetStart) targetStart = 0
20098 if (end > 0 && end < start) end = start
20099
20100 // Copy 0 bytes; we're done
20101 if (end === start) return 0
20102 if (target.length === 0 || this.length === 0) return 0
20103
20104 // Fatal error conditions
20105 if (targetStart < 0) {
20106 throw new RangeError('targetStart out of bounds')
20107 }
20108 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
20109 if (end < 0) throw new RangeError('sourceEnd out of bounds')
20110
20111 // Are we oob?
20112 if (end > this.length) end = this.length
20113 if (target.length - targetStart < end - start) {
20114 end = target.length - targetStart + start
20115 }
20116
20117 var len = end - start
20118 var i
20119
20120 if (this === target && start < targetStart && targetStart < end) {
20121 // descending copy from end
20122 for (i = len - 1; i >= 0; --i) {
20123 target[i + targetStart] = this[i + start]
20124 }
20125 } else if (len < 1000) {
20126 // ascending copy from start
20127 for (i = 0; i < len; ++i) {
20128 target[i + targetStart] = this[i + start]
20129 }
20130 } else {
20131 Uint8Array.prototype.set.call(
20132 target,
20133 this.subarray(start, start + len),
20134 targetStart
20135 )
20136 }
20137
20138 return len
20139 }
20140
20141 // Usage:
20142 // buffer.fill(number[, offset[, end]])
20143 // buffer.fill(buffer[, offset[, end]])
20144 // buffer.fill(string[, offset[, end]][, encoding])
20145 Buffer.prototype.fill = function fill (val, start, end, encoding) {
20146 // Handle string cases:
20147 if (typeof val === 'string') {
20148 if (typeof start === 'string') {
20149 encoding = start
20150 start = 0
20151 end = this.length
20152 } else if (typeof end === 'string') {
20153 encoding = end
20154 end = this.length
20155 }
20156 if (val.length === 1) {
20157 var code = val.charCodeAt(0)
20158 if (code < 256) {
20159 val = code
20160 }
20161 }
20162 if (encoding !== undefined && typeof encoding !== 'string') {
20163 throw new TypeError('encoding must be a string')
20164 }
20165 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
20166 throw new TypeError('Unknown encoding: ' + encoding)
20167 }
20168 } else if (typeof val === 'number') {
20169 val = val & 255
20170 }
20171
20172 // Invalid ranges are not set to a default, so can range check early.
20173 if (start < 0 || this.length < start || this.length < end) {
20174 throw new RangeError('Out of range index')
20175 }
20176
20177 if (end <= start) {
20178 return this
20179 }
20180
20181 start = start >>> 0
20182 end = end === undefined ? this.length : end >>> 0
20183
20184 if (!val) val = 0
20185
20186 var i
20187 if (typeof val === 'number') {
20188 for (i = start; i < end; ++i) {
20189 this[i] = val
20190 }
20191 } else {
20192 var bytes = Buffer.isBuffer(val)
20193 ? val
20194 : new Buffer(val, encoding)
20195 var len = bytes.length
20196 for (i = 0; i < end - start; ++i) {
20197 this[i + start] = bytes[i % len]
20198 }
20199 }
20200
20201 return this
20202 }
20203
20204 // HELPER FUNCTIONS
20205 // ================
20206
20207 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
20208
20209 function base64clean (str) {
20210 // Node strips out invalid characters like \n and \t from the string, base64-js does not
20211 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
20212 // Node converts strings with length < 2 to ''
20213 if (str.length < 2) return ''
20214 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
20215 while (str.length % 4 !== 0) {
20216 str = str + '='
20217 }
20218 return str
20219 }
20220
20221 function stringtrim (str) {
20222 if (str.trim) return str.trim()
20223 return str.replace(/^\s+|\s+$/g, '')
20224 }
20225
20226 function toHex (n) {
20227 if (n < 16) return '0' + n.toString(16)
20228 return n.toString(16)
20229 }
20230
20231 function utf8ToBytes (string, units) {
20232 units = units || Infinity
20233 var codePoint
20234 var length = string.length
20235 var leadSurrogate = null
20236 var bytes = []
20237
20238 for (var i = 0; i < length; ++i) {
20239 codePoint = string.charCodeAt(i)
20240
20241 // is surrogate component
20242 if (codePoint > 0xD7FF && codePoint < 0xE000) {
20243 // last char was a lead
20244 if (!leadSurrogate) {
20245 // no lead yet
20246 if (codePoint > 0xDBFF) {
20247 // unexpected trail
20248 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
20249 continue
20250 } else if (i + 1 === length) {
20251 // unpaired lead
20252 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
20253 continue
20254 }
20255
20256 // valid lead
20257 leadSurrogate = codePoint
20258
20259 continue
20260 }
20261
20262 // 2 leads in a row
20263 if (codePoint < 0xDC00) {
20264 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
20265 leadSurrogate = codePoint
20266 continue
20267 }
20268
20269 // valid surrogate pair
20270 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
20271 } else if (leadSurrogate) {
20272 // valid bmp char, but last char was a lead
20273 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
20274 }
20275
20276 leadSurrogate = null
20277
20278 // encode utf8
20279 if (codePoint < 0x80) {
20280 if ((units -= 1) < 0) break
20281 bytes.push(codePoint)
20282 } else if (codePoint < 0x800) {
20283 if ((units -= 2) < 0) break
20284 bytes.push(
20285 codePoint >> 0x6 | 0xC0,
20286 codePoint & 0x3F | 0x80
20287 )
20288 } else if (codePoint < 0x10000) {
20289 if ((units -= 3) < 0) break
20290 bytes.push(
20291 codePoint >> 0xC | 0xE0,
20292 codePoint >> 0x6 & 0x3F | 0x80,
20293 codePoint & 0x3F | 0x80
20294 )
20295 } else if (codePoint < 0x110000) {
20296 if ((units -= 4) < 0) break
20297 bytes.push(
20298 codePoint >> 0x12 | 0xF0,
20299 codePoint >> 0xC & 0x3F | 0x80,
20300 codePoint >> 0x6 & 0x3F | 0x80,
20301 codePoint & 0x3F | 0x80
20302 )
20303 } else {
20304 throw new Error('Invalid code point')
20305 }
20306 }
20307
20308 return bytes
20309 }
20310
20311 function asciiToBytes (str) {
20312 var byteArray = []
20313 for (var i = 0; i < str.length; ++i) {
20314 // Node's code seems to be doing this and not & 0x7F..
20315 byteArray.push(str.charCodeAt(i) & 0xFF)
20316 }
20317 return byteArray
20318 }
20319
20320 function utf16leToBytes (str, units) {
20321 var c, hi, lo
20322 var byteArray = []
20323 for (var i = 0; i < str.length; ++i) {
20324 if ((units -= 2) < 0) break
20325
20326 c = str.charCodeAt(i)
20327 hi = c >> 8
20328 lo = c % 256
20329 byteArray.push(lo)
20330 byteArray.push(hi)
20331 }
20332
20333 return byteArray
20334 }
20335
20336 function base64ToBytes (str) {
20337 return base64.toByteArray(base64clean(str))
20338 }
20339
20340 function blitBuffer (src, dst, offset, length) {
20341 for (var i = 0; i < length; ++i) {
20342 if ((i + offset >= dst.length) || (i >= src.length)) break
20343 dst[i + offset] = src[i]
20344 }
20345 return i
20346 }
20347
20348 function isnan (val) {
20349 return val !== val // eslint-disable-line no-self-compare
20350 }
20351
20352 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
20353 (function (Buffer){
20354 // Copyright Joyent, Inc. and other Node contributors.
20355 //
20356 // Permission is hereby granted, free of charge, to any person obtaining a
20357 // copy of this software and associated documentation files (the
20358 // "Software"), to deal in the Software without restriction, including
20359 // without limitation the rights to use, copy, modify, merge, publish,
20360 // distribute, sublicense, and/or sell copies of the Software, and to permit
20361 // persons to whom the Software is furnished to do so, subject to the
20362 // following conditions:
20363 //
20364 // The above copyright notice and this permission notice shall be included
20365 // in all copies or substantial portions of the Software.
20366 //
20367 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20368 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20369 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
20370 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20371 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20372 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20373 // USE OR OTHER DEALINGS IN THE SOFTWARE.
20374
20375 // NOTE: These type checking functions intentionally don't use `instanceof`
20376 // because it is fragile and can be easily faked with `Object.create()`.
20377
20378 function isArray(arg) {
20379 if (Array.isArray) {
20380 return Array.isArray(arg);
20381 }
20382 return objectToString(arg) === '[object Array]';
20383 }
20384 exports.isArray = isArray;
20385
20386 function isBoolean(arg) {
20387 return typeof arg === 'boolean';
20388 }
20389 exports.isBoolean = isBoolean;
20390
20391 function isNull(arg) {
20392 return arg === null;
20393 }
20394 exports.isNull = isNull;
20395
20396 function isNullOrUndefined(arg) {
20397 return arg == null;
20398 }
20399 exports.isNullOrUndefined = isNullOrUndefined;
20400
20401 function isNumber(arg) {
20402 return typeof arg === 'number';
20403 }
20404 exports.isNumber = isNumber;
20405
20406 function isString(arg) {
20407 return typeof arg === 'string';
20408 }
20409 exports.isString = isString;
20410
20411 function isSymbol(arg) {
20412 return typeof arg === 'symbol';
20413 }
20414 exports.isSymbol = isSymbol;
20415
20416 function isUndefined(arg) {
20417 return arg === void 0;
20418 }
20419 exports.isUndefined = isUndefined;
20420
20421 function isRegExp(re) {
20422 return objectToString(re) === '[object RegExp]';
20423 }
20424 exports.isRegExp = isRegExp;
20425
20426 function isObject(arg) {
20427 return typeof arg === 'object' && arg !== null;
20428 }
20429 exports.isObject = isObject;
20430
20431 function isDate(d) {
20432 return objectToString(d) === '[object Date]';
20433 }
20434 exports.isDate = isDate;
20435
20436 function isError(e) {
20437 return (objectToString(e) === '[object Error]' || e instanceof Error);
20438 }
20439 exports.isError = isError;
20440
20441 function isFunction(arg) {
20442 return typeof arg === 'function';
20443 }
20444 exports.isFunction = isFunction;
20445
20446 function isPrimitive(arg) {
20447 return arg === null ||
20448 typeof arg === 'boolean' ||
20449 typeof arg === 'number' ||
20450 typeof arg === 'string' ||
20451 typeof arg === 'symbol' || // ES6 symbol
20452 typeof arg === 'undefined';
20453 }
20454 exports.isPrimitive = isPrimitive;
20455
20456 exports.isBuffer = Buffer.isBuffer;
20457
20458 function objectToString(o) {
20459 return Object.prototype.toString.call(o);
20460 }
20461
20462 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
20463 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
20464 // Copyright Joyent, Inc. and other Node contributors.
20465 //
20466 // Permission is hereby granted, free of charge, to any person obtaining a
20467 // copy of this software and associated documentation files (the
20468 // "Software"), to deal in the Software without restriction, including
20469 // without limitation the rights to use, copy, modify, merge, publish,
20470 // distribute, sublicense, and/or sell copies of the Software, and to permit
20471 // persons to whom the Software is furnished to do so, subject to the
20472 // following conditions:
20473 //
20474 // The above copyright notice and this permission notice shall be included
20475 // in all copies or substantial portions of the Software.
20476 //
20477 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20478 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20479 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
20480 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20481 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20482 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20483 // USE OR OTHER DEALINGS IN THE SOFTWARE.
20484
20485 function EventEmitter() {
20486 this._events = this._events || {};
20487 this._maxListeners = this._maxListeners || undefined;
20488 }
20489 module.exports = EventEmitter;
20490
20491 // Backwards-compat with node 0.10.x
20492 EventEmitter.EventEmitter = EventEmitter;
20493
20494 EventEmitter.prototype._events = undefined;
20495 EventEmitter.prototype._maxListeners = undefined;
20496
20497 // By default EventEmitters will print a warning if more than 10 listeners are
20498 // added to it. This is a useful default which helps finding memory leaks.
20499 EventEmitter.defaultMaxListeners = 10;
20500
20501 // Obviously not all Emitters should be limited to 10. This function allows
20502 // that to be increased. Set to zero for unlimited.
20503 EventEmitter.prototype.setMaxListeners = function(n) {
20504 if (!isNumber(n) || n < 0 || isNaN(n))
20505 throw TypeError('n must be a positive number');
20506 this._maxListeners = n;
20507 return this;
20508 };
20509
20510 EventEmitter.prototype.emit = function(type) {
20511 var er, handler, len, args, i, listeners;
20512
20513 if (!this._events)
20514 this._events = {};
20515
20516 // If there is no 'error' event listener then throw.
20517 if (type === 'error') {
20518 if (!this._events.error ||
20519 (isObject(this._events.error) && !this._events.error.length)) {
20520 er = arguments[1];
20521 if (er instanceof Error) {
20522 throw er; // Unhandled 'error' event
20523 } else {
20524 // At least give some kind of context to the user
20525 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
20526 err.context = er;
20527 throw err;
20528 }
20529 }
20530 }
20531
20532 handler = this._events[type];
20533
20534 if (isUndefined(handler))
20535 return false;
20536
20537 if (isFunction(handler)) {
20538 switch (arguments.length) {
20539 // fast cases
20540 case 1:
20541 handler.call(this);
20542 break;
20543 case 2:
20544 handler.call(this, arguments[1]);
20545 break;
20546 case 3:
20547 handler.call(this, arguments[1], arguments[2]);
20548 break;
20549 // slower
20550 default:
20551 args = Array.prototype.slice.call(arguments, 1);
20552 handler.apply(this, args);
20553 }
20554 } else if (isObject(handler)) {
20555 args = Array.prototype.slice.call(arguments, 1);
20556 listeners = handler.slice();
20557 len = listeners.length;
20558 for (i = 0; i < len; i++)
20559 listeners[i].apply(this, args);
20560 }
20561
20562 return true;
20563 };
20564
20565 EventEmitter.prototype.addListener = function(type, listener) {
20566 var m;
20567
20568 if (!isFunction(listener))
20569 throw TypeError('listener must be a function');
20570
20571 if (!this._events)
20572 this._events = {};
20573
20574 // To avoid recursion in the case that type === "newListener"! Before
20575 // adding it to the listeners, first emit "newListener".
20576 if (this._events.newListener)
20577 this.emit('newListener', type,
20578 isFunction(listener.listener) ?
20579 listener.listener : listener);
20580
20581 if (!this._events[type])
20582 // Optimize the case of one listener. Don't need the extra array object.
20583 this._events[type] = listener;
20584 else if (isObject(this._events[type]))
20585 // If we've already got an array, just append.
20586 this._events[type].push(listener);
20587 else
20588 // Adding the second element, need to change to array.
20589 this._events[type] = [this._events[type], listener];
20590
20591 // Check for listener leak
20592 if (isObject(this._events[type]) && !this._events[type].warned) {
20593 if (!isUndefined(this._maxListeners)) {
20594 m = this._maxListeners;
20595 } else {
20596 m = EventEmitter.defaultMaxListeners;
20597 }
20598
20599 if (m && m > 0 && this._events[type].length > m) {
20600 this._events[type].warned = true;
20601 console.error('(node) warning: possible EventEmitter memory ' +
20602 'leak detected. %d listeners added. ' +
20603 'Use emitter.setMaxListeners() to increase limit.',
20604 this._events[type].length);
20605 if (typeof console.trace === 'function') {
20606 // not supported in IE 10
20607 console.trace();
20608 }
20609 }
20610 }
20611
20612 return this;
20613 };
20614
20615 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
20616
20617 EventEmitter.prototype.once = function(type, listener) {
20618 if (!isFunction(listener))
20619 throw TypeError('listener must be a function');
20620
20621 var fired = false;
20622
20623 function g() {
20624 this.removeListener(type, g);
20625
20626 if (!fired) {
20627 fired = true;
20628 listener.apply(this, arguments);
20629 }
20630 }
20631
20632 g.listener = listener;
20633 this.on(type, g);
20634
20635 return this;
20636 };
20637
20638 // emits a 'removeListener' event iff the listener was removed
20639 EventEmitter.prototype.removeListener = function(type, listener) {
20640 var list, position, length, i;
20641
20642 if (!isFunction(listener))
20643 throw TypeError('listener must be a function');
20644
20645 if (!this._events || !this._events[type])
20646 return this;
20647
20648 list = this._events[type];
20649 length = list.length;
20650 position = -1;
20651
20652 if (list === listener ||
20653 (isFunction(list.listener) && list.listener === listener)) {
20654 delete this._events[type];
20655 if (this._events.removeListener)
20656 this.emit('removeListener', type, listener);
20657
20658 } else if (isObject(list)) {
20659 for (i = length; i-- > 0;) {
20660 if (list[i] === listener ||
20661 (list[i].listener && list[i].listener === listener)) {
20662 position = i;
20663 break;
20664 }
20665 }
20666
20667 if (position < 0)
20668 return this;
20669
20670 if (list.length === 1) {
20671 list.length = 0;
20672 delete this._events[type];
20673 } else {
20674 list.splice(position, 1);
20675 }
20676
20677 if (this._events.removeListener)
20678 this.emit('removeListener', type, listener);
20679 }
20680
20681 return this;
20682 };
20683
20684 EventEmitter.prototype.removeAllListeners = function(type) {
20685 var key, listeners;
20686
20687 if (!this._events)
20688 return this;
20689
20690 // not listening for removeListener, no need to emit
20691 if (!this._events.removeListener) {
20692 if (arguments.length === 0)
20693 this._events = {};
20694 else if (this._events[type])
20695 delete this._events[type];
20696 return this;
20697 }
20698
20699 // emit removeListener for all listeners on all events
20700 if (arguments.length === 0) {
20701 for (key in this._events) {
20702 if (key === 'removeListener') continue;
20703 this.removeAllListeners(key);
20704 }
20705 this.removeAllListeners('removeListener');
20706 this._events = {};
20707 return this;
20708 }
20709
20710 listeners = this._events[type];
20711
20712 if (isFunction(listeners)) {
20713 this.removeListener(type, listeners);
20714 } else if (listeners) {
20715 // LIFO order
20716 while (listeners.length)
20717 this.removeListener(type, listeners[listeners.length - 1]);
20718 }
20719 delete this._events[type];
20720
20721 return this;
20722 };
20723
20724 EventEmitter.prototype.listeners = function(type) {
20725 var ret;
20726 if (!this._events || !this._events[type])
20727 ret = [];
20728 else if (isFunction(this._events[type]))
20729 ret = [this._events[type]];
20730 else
20731 ret = this._events[type].slice();
20732 return ret;
20733 };
20734
20735 EventEmitter.prototype.listenerCount = function(type) {
20736 if (this._events) {
20737 var evlistener = this._events[type];
20738
20739 if (isFunction(evlistener))
20740 return 1;
20741 else if (evlistener)
20742 return evlistener.length;
20743 }
20744 return 0;
20745 };
20746
20747 EventEmitter.listenerCount = function(emitter, type) {
20748 return emitter.listenerCount(type);
20749 };
20750
20751 function isFunction(arg) {
20752 return typeof arg === 'function';
20753 }
20754
20755 function isNumber(arg) {
20756 return typeof arg === 'number';
20757 }
20758
20759 function isObject(arg) {
20760 return typeof arg === 'object' && arg !== null;
20761 }
20762
20763 function isUndefined(arg) {
20764 return arg === void 0;
20765 }
20766
20767 },{}],8:[function(require,module,exports){
20768 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
20769 var e, m
20770 var eLen = nBytes * 8 - mLen - 1
20771 var eMax = (1 << eLen) - 1
20772 var eBias = eMax >> 1
20773 var nBits = -7
20774 var i = isLE ? (nBytes - 1) : 0
20775 var d = isLE ? -1 : 1
20776 var s = buffer[offset + i]
20777
20778 i += d
20779
20780 e = s & ((1 << (-nBits)) - 1)
20781 s >>= (-nBits)
20782 nBits += eLen
20783 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
20784
20785 m = e & ((1 << (-nBits)) - 1)
20786 e >>= (-nBits)
20787 nBits += mLen
20788 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
20789
20790 if (e === 0) {
20791 e = 1 - eBias
20792 } else if (e === eMax) {
20793 return m ? NaN : ((s ? -1 : 1) * Infinity)
20794 } else {
20795 m = m + Math.pow(2, mLen)
20796 e = e - eBias
20797 }
20798 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
20799 }
20800
20801 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
20802 var e, m, c
20803 var eLen = nBytes * 8 - mLen - 1
20804 var eMax = (1 << eLen) - 1
20805 var eBias = eMax >> 1
20806 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
20807 var i = isLE ? 0 : (nBytes - 1)
20808 var d = isLE ? 1 : -1
20809 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
20810
20811 value = Math.abs(value)
20812
20813 if (isNaN(value) || value === Infinity) {
20814 m = isNaN(value) ? 1 : 0
20815 e = eMax
20816 } else {
20817 e = Math.floor(Math.log(value) / Math.LN2)
20818 if (value * (c = Math.pow(2, -e)) < 1) {
20819 e--
20820 c *= 2
20821 }
20822 if (e + eBias >= 1) {
20823 value += rt / c
20824 } else {
20825 value += rt * Math.pow(2, 1 - eBias)
20826 }
20827 if (value * c >= 2) {
20828 e++
20829 c /= 2
20830 }
20831
20832 if (e + eBias >= eMax) {
20833 m = 0
20834 e = eMax
20835 } else if (e + eBias >= 1) {
20836 m = (value * c - 1) * Math.pow(2, mLen)
20837 e = e + eBias
20838 } else {
20839 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
20840 e = 0
20841 }
20842 }
20843
20844 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
20845
20846 e = (e << mLen) | m
20847 eLen += mLen
20848 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
20849
20850 buffer[offset + i - d] |= s * 128
20851 }
20852
20853 },{}],9:[function(require,module,exports){
20854 if (typeof Object.create === 'function') {
20855 // implementation from standard node.js 'util' module
20856 module.exports = function inherits(ctor, superCtor) {
20857 ctor.super_ = superCtor
20858 ctor.prototype = Object.create(superCtor.prototype, {
20859 constructor: {
20860 value: ctor,
20861 enumerable: false,
20862 writable: true,
20863 configurable: true
20864 }
20865 });
20866 };
20867 } else {
20868 // old school shim for old browsers
20869 module.exports = function inherits(ctor, superCtor) {
20870 ctor.super_ = superCtor
20871 var TempCtor = function () {}
20872 TempCtor.prototype = superCtor.prototype
20873 ctor.prototype = new TempCtor()
20874 ctor.prototype.constructor = ctor
20875 }
20876 }
20877
20878 },{}],10:[function(require,module,exports){
20879 /*!
20880 * Determine if an object is a Buffer
20881 *
20882 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20883 * @license MIT
20884 */
20885
20886 // The _isBuffer check is for Safari 5-7 support, because it's missing
20887 // Object.prototype.constructor. Remove this eventually
20888 module.exports = function (obj) {
20889 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
20890 }
20891
20892 function isBuffer (obj) {
20893 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
20894 }
20895
20896 // For Node v0.10 support. Remove this eventually.
20897 function isSlowBuffer (obj) {
20898 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
20899 }
20900
20901 },{}],11:[function(require,module,exports){
20902 var toString = {}.toString;
20903
20904 module.exports = Array.isArray || function (arr) {
20905 return toString.call(arr) == '[object Array]';
20906 };
20907
20908 },{}],12:[function(require,module,exports){
20909 (function (process){
20910 'use strict';
20911
20912 if (!process.version ||
20913 process.version.indexOf('v0.') === 0 ||
20914 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
20915 module.exports = nextTick;
20916 } else {
20917 module.exports = process.nextTick;
20918 }
20919
20920 function nextTick(fn, arg1, arg2, arg3) {
20921 if (typeof fn !== 'function') {
20922 throw new TypeError('"callback" argument must be a function');
20923 }
20924 var len = arguments.length;
20925 var args, i;
20926 switch (len) {
20927 case 0:
20928 case 1:
20929 return process.nextTick(fn);
20930 case 2:
20931 return process.nextTick(function afterTickOne() {
20932 fn.call(null, arg1);
20933 });
20934 case 3:
20935 return process.nextTick(function afterTickTwo() {
20936 fn.call(null, arg1, arg2);
20937 });
20938 case 4:
20939 return process.nextTick(function afterTickThree() {
20940 fn.call(null, arg1, arg2, arg3);
20941 });
20942 default:
20943 args = new Array(len - 1);
20944 i = 0;
20945 while (i < args.length) {
20946 args[i++] = arguments[i];
20947 }
20948 return process.nextTick(function afterTick() {
20949 fn.apply(null, args);
20950 });
20951 }
20952 }
20953
20954 }).call(this,require('_process'))
20955 },{"_process":13}],13:[function(require,module,exports){
20956 // shim for using process in browser
20957 var process = module.exports = {};
20958
20959 // cached from whatever global is present so that test runners that stub it
20960 // don't break things. But we need to wrap it in a try catch in case it is
20961 // wrapped in strict mode code which doesn't define any globals. It's inside a
20962 // function because try/catches deoptimize in certain engines.
20963
20964 var cachedSetTimeout;
20965 var cachedClearTimeout;
20966
20967 function defaultSetTimout() {
20968 throw new Error('setTimeout has not been defined');
20969 }
20970 function defaultClearTimeout () {
20971 throw new Error('clearTimeout has not been defined');
20972 }
20973 (function () {
20974 try {
20975 if (typeof setTimeout === 'function') {
20976 cachedSetTimeout = setTimeout;
20977 } else {
20978 cachedSetTimeout = defaultSetTimout;
20979 }
20980 } catch (e) {
20981 cachedSetTimeout = defaultSetTimout;
20982 }
20983 try {
20984 if (typeof clearTimeout === 'function') {
20985 cachedClearTimeout = clearTimeout;
20986 } else {
20987 cachedClearTimeout = defaultClearTimeout;
20988 }
20989 } catch (e) {
20990 cachedClearTimeout = defaultClearTimeout;
20991 }
20992 } ())
20993 function runTimeout(fun) {
20994 if (cachedSetTimeout === setTimeout) {
20995 //normal enviroments in sane situations
20996 return setTimeout(fun, 0);
20997 }
20998 // if setTimeout wasn't available but was latter defined
20999 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
21000 cachedSetTimeout = setTimeout;
21001 return setTimeout(fun, 0);
21002 }
21003 try {
21004 // when when somebody has screwed with setTimeout but no I.E. maddness
21005 return cachedSetTimeout(fun, 0);
21006 } catch(e){
21007 try {
21008 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
21009 return cachedSetTimeout.call(null, fun, 0);
21010 } catch(e){
21011 // 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
21012 return cachedSetTimeout.call(this, fun, 0);
21013 }
21014 }
21015
21016
21017 }
21018 function runClearTimeout(marker) {
21019 if (cachedClearTimeout === clearTimeout) {
21020 //normal enviroments in sane situations
21021 return clearTimeout(marker);
21022 }
21023 // if clearTimeout wasn't available but was latter defined
21024 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
21025 cachedClearTimeout = clearTimeout;
21026 return clearTimeout(marker);
21027 }
21028 try {
21029 // when when somebody has screwed with setTimeout but no I.E. maddness
21030 return cachedClearTimeout(marker);
21031 } catch (e){
21032 try {
21033 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
21034 return cachedClearTimeout.call(null, marker);
21035 } catch (e){
21036 // 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.
21037 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
21038 return cachedClearTimeout.call(this, marker);
21039 }
21040 }
21041
21042
21043
21044 }
21045 var queue = [];
21046 var draining = false;
21047 var currentQueue;
21048 var queueIndex = -1;
21049
21050 function cleanUpNextTick() {
21051 if (!draining || !currentQueue) {
21052 return;
21053 }
21054 draining = false;
21055 if (currentQueue.length) {
21056 queue = currentQueue.concat(queue);
21057 } else {
21058 queueIndex = -1;
21059 }
21060 if (queue.length) {
21061 drainQueue();
21062 }
21063 }
21064
21065 function drainQueue() {
21066 if (draining) {
21067 return;
21068 }
21069 var timeout = runTimeout(cleanUpNextTick);
21070 draining = true;
21071
21072 var len = queue.length;
21073 while(len) {
21074 currentQueue = queue;
21075 queue = [];
21076 while (++queueIndex < len) {
21077 if (currentQueue) {
21078 currentQueue[queueIndex].run();
21079 }
21080 }
21081 queueIndex = -1;
21082 len = queue.length;
21083 }
21084 currentQueue = null;
21085 draining = false;
21086 runClearTimeout(timeout);
21087 }
21088
21089 process.nextTick = function (fun) {
21090 var args = new Array(arguments.length - 1);
21091 if (arguments.length > 1) {
21092 for (var i = 1; i < arguments.length; i++) {
21093 args[i - 1] = arguments[i];
21094 }
21095 }
21096 queue.push(new Item(fun, args));
21097 if (queue.length === 1 && !draining) {
21098 runTimeout(drainQueue);
21099 }
21100 };
21101
21102 // v8 likes predictible objects
21103 function Item(fun, array) {
21104 this.fun = fun;
21105 this.array = array;
21106 }
21107 Item.prototype.run = function () {
21108 this.fun.apply(null, this.array);
21109 };
21110 process.title = 'browser';
21111 process.browser = true;
21112 process.env = {};
21113 process.argv = [];
21114 process.version = ''; // empty string to avoid regexp issues
21115 process.versions = {};
21116
21117 function noop() {}
21118
21119 process.on = noop;
21120 process.addListener = noop;
21121 process.once = noop;
21122 process.off = noop;
21123 process.removeListener = noop;
21124 process.removeAllListeners = noop;
21125 process.emit = noop;
21126
21127 process.binding = function (name) {
21128 throw new Error('process.binding is not supported');
21129 };
21130
21131 process.cwd = function () { return '/' };
21132 process.chdir = function (dir) {
21133 throw new Error('process.chdir is not supported');
21134 };
21135 process.umask = function() { return 0; };
21136
21137 },{}],14:[function(require,module,exports){
21138 module.exports = require("./lib/_stream_duplex.js")
21139
21140 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
21141 // a duplex stream is just a stream that is both readable and writable.
21142 // Since JS doesn't have multiple prototypal inheritance, this class
21143 // prototypally inherits from Readable, and then parasitically from
21144 // Writable.
21145
21146 'use strict';
21147
21148 /*<replacement>*/
21149
21150 var objectKeys = Object.keys || function (obj) {
21151 var keys = [];
21152 for (var key in obj) {
21153 keys.push(key);
21154 }return keys;
21155 };
21156 /*</replacement>*/
21157
21158 module.exports = Duplex;
21159
21160 /*<replacement>*/
21161 var processNextTick = require('process-nextick-args');
21162 /*</replacement>*/
21163
21164 /*<replacement>*/
21165 var util = require('core-util-is');
21166 util.inherits = require('inherits');
21167 /*</replacement>*/
21168
21169 var Readable = require('./_stream_readable');
21170 var Writable = require('./_stream_writable');
21171
21172 util.inherits(Duplex, Readable);
21173
21174 var keys = objectKeys(Writable.prototype);
21175 for (var v = 0; v < keys.length; v++) {
21176 var method = keys[v];
21177 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
21178 }
21179
21180 function Duplex(options) {
21181 if (!(this instanceof Duplex)) return new Duplex(options);
21182
21183 Readable.call(this, options);
21184 Writable.call(this, options);
21185
21186 if (options && options.readable === false) this.readable = false;
21187
21188 if (options && options.writable === false) this.writable = false;
21189
21190 this.allowHalfOpen = true;
21191 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
21192
21193 this.once('end', onend);
21194 }
21195
21196 // the no-half-open enforcer
21197 function onend() {
21198 // if we allow half-open state, or if the writable side ended,
21199 // then we're ok.
21200 if (this.allowHalfOpen || this._writableState.ended) return;
21201
21202 // no more data can be written.
21203 // But allow more writes to happen in this tick.
21204 processNextTick(onEndNT, this);
21205 }
21206
21207 function onEndNT(self) {
21208 self.end();
21209 }
21210
21211 function forEach(xs, f) {
21212 for (var i = 0, l = xs.length; i < l; i++) {
21213 f(xs[i], i);
21214 }
21215 }
21216 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
21217 // a passthrough stream.
21218 // basically just the most minimal sort of Transform stream.
21219 // Every written chunk gets output as-is.
21220
21221 'use strict';
21222
21223 module.exports = PassThrough;
21224
21225 var Transform = require('./_stream_transform');
21226
21227 /*<replacement>*/
21228 var util = require('core-util-is');
21229 util.inherits = require('inherits');
21230 /*</replacement>*/
21231
21232 util.inherits(PassThrough, Transform);
21233
21234 function PassThrough(options) {
21235 if (!(this instanceof PassThrough)) return new PassThrough(options);
21236
21237 Transform.call(this, options);
21238 }
21239
21240 PassThrough.prototype._transform = function (chunk, encoding, cb) {
21241 cb(null, chunk);
21242 };
21243 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
21244 (function (process){
21245 'use strict';
21246
21247 module.exports = Readable;
21248
21249 /*<replacement>*/
21250 var processNextTick = require('process-nextick-args');
21251 /*</replacement>*/
21252
21253 /*<replacement>*/
21254 var isArray = require('isarray');
21255 /*</replacement>*/
21256
21257 /*<replacement>*/
21258 var Duplex;
21259 /*</replacement>*/
21260
21261 Readable.ReadableState = ReadableState;
21262
21263 /*<replacement>*/
21264 var EE = require('events').EventEmitter;
21265
21266 var EElistenerCount = function (emitter, type) {
21267 return emitter.listeners(type).length;
21268 };
21269 /*</replacement>*/
21270
21271 /*<replacement>*/
21272 var Stream;
21273 (function () {
21274 try {
21275 Stream = require('st' + 'ream');
21276 } catch (_) {} finally {
21277 if (!Stream) Stream = require('events').EventEmitter;
21278 }
21279 })();
21280 /*</replacement>*/
21281
21282 var Buffer = require('buffer').Buffer;
21283 /*<replacement>*/
21284 var bufferShim = require('buffer-shims');
21285 /*</replacement>*/
21286
21287 /*<replacement>*/
21288 var util = require('core-util-is');
21289 util.inherits = require('inherits');
21290 /*</replacement>*/
21291
21292 /*<replacement>*/
21293 var debugUtil = require('util');
21294 var debug = void 0;
21295 if (debugUtil && debugUtil.debuglog) {
21296 debug = debugUtil.debuglog('stream');
21297 } else {
21298 debug = function () {};
21299 }
21300 /*</replacement>*/
21301
21302 var BufferList = require('./internal/streams/BufferList');
21303 var StringDecoder;
21304
21305 util.inherits(Readable, Stream);
21306
21307 function prependListener(emitter, event, fn) {
21308 // Sadly this is not cacheable as some libraries bundle their own
21309 // event emitter implementation with them.
21310 if (typeof emitter.prependListener === 'function') {
21311 return emitter.prependListener(event, fn);
21312 } else {
21313 // This is a hack to make sure that our error handler is attached before any
21314 // userland ones. NEVER DO THIS. This is here only because this code needs
21315 // to continue to work with older versions of Node.js that do not include
21316 // the prependListener() method. The goal is to eventually remove this hack.
21317 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]];
21318 }
21319 }
21320
21321 function ReadableState(options, stream) {
21322 Duplex = Duplex || require('./_stream_duplex');
21323
21324 options = options || {};
21325
21326 // object stream flag. Used to make read(n) ignore n and to
21327 // make all the buffer merging and length checks go away
21328 this.objectMode = !!options.objectMode;
21329
21330 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
21331
21332 // the point at which it stops calling _read() to fill the buffer
21333 // Note: 0 is a valid value, means "don't call _read preemptively ever"
21334 var hwm = options.highWaterMark;
21335 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
21336 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
21337
21338 // cast to ints.
21339 this.highWaterMark = ~ ~this.highWaterMark;
21340
21341 // A linked list is used to store data chunks instead of an array because the
21342 // linked list can remove elements from the beginning faster than
21343 // array.shift()
21344 this.buffer = new BufferList();
21345 this.length = 0;
21346 this.pipes = null;
21347 this.pipesCount = 0;
21348 this.flowing = null;
21349 this.ended = false;
21350 this.endEmitted = false;
21351 this.reading = false;
21352
21353 // a flag to be able to tell if the onwrite cb is called immediately,
21354 // or on a later tick. We set this to true at first, because any
21355 // actions that shouldn't happen until "later" should generally also
21356 // not happen before the first write call.
21357 this.sync = true;
21358
21359 // whenever we return null, then we set a flag to say
21360 // that we're awaiting a 'readable' event emission.
21361 this.needReadable = false;
21362 this.emittedReadable = false;
21363 this.readableListening = false;
21364 this.resumeScheduled = false;
21365
21366 // Crypto is kind of old and crusty. Historically, its default string
21367 // encoding is 'binary' so we have to make this configurable.
21368 // Everything else in the universe uses 'utf8', though.
21369 this.defaultEncoding = options.defaultEncoding || 'utf8';
21370
21371 // when piping, we only care about 'readable' events that happen
21372 // after read()ing all the bytes and not getting any pushback.
21373 this.ranOut = false;
21374
21375 // the number of writers that are awaiting a drain event in .pipe()s
21376 this.awaitDrain = 0;
21377
21378 // if true, a maybeReadMore has been scheduled
21379 this.readingMore = false;
21380
21381 this.decoder = null;
21382 this.encoding = null;
21383 if (options.encoding) {
21384 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
21385 this.decoder = new StringDecoder(options.encoding);
21386 this.encoding = options.encoding;
21387 }
21388 }
21389
21390 function Readable(options) {
21391 Duplex = Duplex || require('./_stream_duplex');
21392
21393 if (!(this instanceof Readable)) return new Readable(options);
21394
21395 this._readableState = new ReadableState(options, this);
21396
21397 // legacy
21398 this.readable = true;
21399
21400 if (options && typeof options.read === 'function') this._read = options.read;
21401
21402 Stream.call(this);
21403 }
21404
21405 // Manually shove something into the read() buffer.
21406 // This returns true if the highWaterMark has not been hit yet,
21407 // similar to how Writable.write() returns true if you should
21408 // write() some more.
21409 Readable.prototype.push = function (chunk, encoding) {
21410 var state = this._readableState;
21411
21412 if (!state.objectMode && typeof chunk === 'string') {
21413 encoding = encoding || state.defaultEncoding;
21414 if (encoding !== state.encoding) {
21415 chunk = bufferShim.from(chunk, encoding);
21416 encoding = '';
21417 }
21418 }
21419
21420 return readableAddChunk(this, state, chunk, encoding, false);
21421 };
21422
21423 // Unshift should *always* be something directly out of read()
21424 Readable.prototype.unshift = function (chunk) {
21425 var state = this._readableState;
21426 return readableAddChunk(this, state, chunk, '', true);
21427 };
21428
21429 Readable.prototype.isPaused = function () {
21430 return this._readableState.flowing === false;
21431 };
21432
21433 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
21434 var er = chunkInvalid(state, chunk);
21435 if (er) {
21436 stream.emit('error', er);
21437 } else if (chunk === null) {
21438 state.reading = false;
21439 onEofChunk(stream, state);
21440 } else if (state.objectMode || chunk && chunk.length > 0) {
21441 if (state.ended && !addToFront) {
21442 var e = new Error('stream.push() after EOF');
21443 stream.emit('error', e);
21444 } else if (state.endEmitted && addToFront) {
21445 var _e = new Error('stream.unshift() after end event');
21446 stream.emit('error', _e);
21447 } else {
21448 var skipAdd;
21449 if (state.decoder && !addToFront && !encoding) {
21450 chunk = state.decoder.write(chunk);
21451 skipAdd = !state.objectMode && chunk.length === 0;
21452 }
21453
21454 if (!addToFront) state.reading = false;
21455
21456 // Don't add to the buffer if we've decoded to an empty string chunk and
21457 // we're not in object mode
21458 if (!skipAdd) {
21459 // if we want the data now, just emit it.
21460 if (state.flowing && state.length === 0 && !state.sync) {
21461 stream.emit('data', chunk);
21462 stream.read(0);
21463 } else {
21464 // update the buffer info.
21465 state.length += state.objectMode ? 1 : chunk.length;
21466 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
21467
21468 if (state.needReadable) emitReadable(stream);
21469 }
21470 }
21471
21472 maybeReadMore(stream, state);
21473 }
21474 } else if (!addToFront) {
21475 state.reading = false;
21476 }
21477
21478 return needMoreData(state);
21479 }
21480
21481 // if it's past the high water mark, we can push in some more.
21482 // Also, if we have no data yet, we can stand some
21483 // more bytes. This is to work around cases where hwm=0,
21484 // such as the repl. Also, if the push() triggered a
21485 // readable event, and the user called read(largeNumber) such that
21486 // needReadable was set, then we ought to push more, so that another
21487 // 'readable' event will be triggered.
21488 function needMoreData(state) {
21489 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
21490 }
21491
21492 // backwards compatibility.
21493 Readable.prototype.setEncoding = function (enc) {
21494 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
21495 this._readableState.decoder = new StringDecoder(enc);
21496 this._readableState.encoding = enc;
21497 return this;
21498 };
21499
21500 // Don't raise the hwm > 8MB
21501 var MAX_HWM = 0x800000;
21502 function computeNewHighWaterMark(n) {
21503 if (n >= MAX_HWM) {
21504 n = MAX_HWM;
21505 } else {
21506 // Get the next highest power of 2 to prevent increasing hwm excessively in
21507 // tiny amounts
21508 n--;
21509 n |= n >>> 1;
21510 n |= n >>> 2;
21511 n |= n >>> 4;
21512 n |= n >>> 8;
21513 n |= n >>> 16;
21514 n++;
21515 }
21516 return n;
21517 }
21518
21519 // This function is designed to be inlinable, so please take care when making
21520 // changes to the function body.
21521 function howMuchToRead(n, state) {
21522 if (n <= 0 || state.length === 0 && state.ended) return 0;
21523 if (state.objectMode) return 1;
21524 if (n !== n) {
21525 // Only flow one buffer at a time
21526 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
21527 }
21528 // If we're asking for more than the current hwm, then raise the hwm.
21529 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
21530 if (n <= state.length) return n;
21531 // Don't have enough
21532 if (!state.ended) {
21533 state.needReadable = true;
21534 return 0;
21535 }
21536 return state.length;
21537 }
21538
21539 // you can override either this method, or the async _read(n) below.
21540 Readable.prototype.read = function (n) {
21541 debug('read', n);
21542 n = parseInt(n, 10);
21543 var state = this._readableState;
21544 var nOrig = n;
21545
21546 if (n !== 0) state.emittedReadable = false;
21547
21548 // if we're doing read(0) to trigger a readable event, but we
21549 // already have a bunch of data in the buffer, then just trigger
21550 // the 'readable' event and move on.
21551 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
21552 debug('read: emitReadable', state.length, state.ended);
21553 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
21554 return null;
21555 }
21556
21557 n = howMuchToRead(n, state);
21558
21559 // if we've ended, and we're now clear, then finish it up.
21560 if (n === 0 && state.ended) {
21561 if (state.length === 0) endReadable(this);
21562 return null;
21563 }
21564
21565 // All the actual chunk generation logic needs to be
21566 // *below* the call to _read. The reason is that in certain
21567 // synthetic stream cases, such as passthrough streams, _read
21568 // may be a completely synchronous operation which may change
21569 // the state of the read buffer, providing enough data when
21570 // before there was *not* enough.
21571 //
21572 // So, the steps are:
21573 // 1. Figure out what the state of things will be after we do
21574 // a read from the buffer.
21575 //
21576 // 2. If that resulting state will trigger a _read, then call _read.
21577 // Note that this may be asynchronous, or synchronous. Yes, it is
21578 // deeply ugly to write APIs this way, but that still doesn't mean
21579 // that the Readable class should behave improperly, as streams are
21580 // designed to be sync/async agnostic.
21581 // Take note if the _read call is sync or async (ie, if the read call
21582 // has returned yet), so that we know whether or not it's safe to emit
21583 // 'readable' etc.
21584 //
21585 // 3. Actually pull the requested chunks out of the buffer and return.
21586
21587 // if we need a readable event, then we need to do some reading.
21588 var doRead = state.needReadable;
21589 debug('need readable', doRead);
21590
21591 // if we currently have less than the highWaterMark, then also read some
21592 if (state.length === 0 || state.length - n < state.highWaterMark) {
21593 doRead = true;
21594 debug('length less than watermark', doRead);
21595 }
21596
21597 // however, if we've ended, then there's no point, and if we're already
21598 // reading, then it's unnecessary.
21599 if (state.ended || state.reading) {
21600 doRead = false;
21601 debug('reading or ended', doRead);
21602 } else if (doRead) {
21603 debug('do read');
21604 state.reading = true;
21605 state.sync = true;
21606 // if the length is currently zero, then we *need* a readable event.
21607 if (state.length === 0) state.needReadable = true;
21608 // call internal read method
21609 this._read(state.highWaterMark);
21610 state.sync = false;
21611 // If _read pushed data synchronously, then `reading` will be false,
21612 // and we need to re-evaluate how much data we can return to the user.
21613 if (!state.reading) n = howMuchToRead(nOrig, state);
21614 }
21615
21616 var ret;
21617 if (n > 0) ret = fromList(n, state);else ret = null;
21618
21619 if (ret === null) {
21620 state.needReadable = true;
21621 n = 0;
21622 } else {
21623 state.length -= n;
21624 }
21625
21626 if (state.length === 0) {
21627 // If we have nothing in the buffer, then we want to know
21628 // as soon as we *do* get something into the buffer.
21629 if (!state.ended) state.needReadable = true;
21630
21631 // If we tried to read() past the EOF, then emit end on the next tick.
21632 if (nOrig !== n && state.ended) endReadable(this);
21633 }
21634
21635 if (ret !== null) this.emit('data', ret);
21636
21637 return ret;
21638 };
21639
21640 function chunkInvalid(state, chunk) {
21641 var er = null;
21642 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
21643 er = new TypeError('Invalid non-string/buffer chunk');
21644 }
21645 return er;
21646 }
21647
21648 function onEofChunk(stream, state) {
21649 if (state.ended) return;
21650 if (state.decoder) {
21651 var chunk = state.decoder.end();
21652 if (chunk && chunk.length) {
21653 state.buffer.push(chunk);
21654 state.length += state.objectMode ? 1 : chunk.length;
21655 }
21656 }
21657 state.ended = true;
21658
21659 // emit 'readable' now to make sure it gets picked up.
21660 emitReadable(stream);
21661 }
21662
21663 // Don't emit readable right away in sync mode, because this can trigger
21664 // another read() call => stack overflow. This way, it might trigger
21665 // a nextTick recursion warning, but that's not so bad.
21666 function emitReadable(stream) {
21667 var state = stream._readableState;
21668 state.needReadable = false;
21669 if (!state.emittedReadable) {
21670 debug('emitReadable', state.flowing);
21671 state.emittedReadable = true;
21672 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
21673 }
21674 }
21675
21676 function emitReadable_(stream) {
21677 debug('emit readable');
21678 stream.emit('readable');
21679 flow(stream);
21680 }
21681
21682 // at this point, the user has presumably seen the 'readable' event,
21683 // and called read() to consume some data. that may have triggered
21684 // in turn another _read(n) call, in which case reading = true if
21685 // it's in progress.
21686 // However, if we're not ended, or reading, and the length < hwm,
21687 // then go ahead and try to read some more preemptively.
21688 function maybeReadMore(stream, state) {
21689 if (!state.readingMore) {
21690 state.readingMore = true;
21691 processNextTick(maybeReadMore_, stream, state);
21692 }
21693 }
21694
21695 function maybeReadMore_(stream, state) {
21696 var len = state.length;
21697 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
21698 debug('maybeReadMore read 0');
21699 stream.read(0);
21700 if (len === state.length)
21701 // didn't get any data, stop spinning.
21702 break;else len = state.length;
21703 }
21704 state.readingMore = false;
21705 }
21706
21707 // abstract method. to be overridden in specific implementation classes.
21708 // call cb(er, data) where data is <= n in length.
21709 // for virtual (non-string, non-buffer) streams, "length" is somewhat
21710 // arbitrary, and perhaps not very meaningful.
21711 Readable.prototype._read = function (n) {
21712 this.emit('error', new Error('_read() is not implemented'));
21713 };
21714
21715 Readable.prototype.pipe = function (dest, pipeOpts) {
21716 var src = this;
21717 var state = this._readableState;
21718
21719 switch (state.pipesCount) {
21720 case 0:
21721 state.pipes = dest;
21722 break;
21723 case 1:
21724 state.pipes = [state.pipes, dest];
21725 break;
21726 default:
21727 state.pipes.push(dest);
21728 break;
21729 }
21730 state.pipesCount += 1;
21731 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
21732
21733 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
21734
21735 var endFn = doEnd ? onend : cleanup;
21736 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
21737
21738 dest.on('unpipe', onunpipe);
21739 function onunpipe(readable) {
21740 debug('onunpipe');
21741 if (readable === src) {
21742 cleanup();
21743 }
21744 }
21745
21746 function onend() {
21747 debug('onend');
21748 dest.end();
21749 }
21750
21751 // when the dest drains, it reduces the awaitDrain counter
21752 // on the source. This would be more elegant with a .once()
21753 // handler in flow(), but adding and removing repeatedly is
21754 // too slow.
21755 var ondrain = pipeOnDrain(src);
21756 dest.on('drain', ondrain);
21757
21758 var cleanedUp = false;
21759 function cleanup() {
21760 debug('cleanup');
21761 // cleanup event handlers once the pipe is broken
21762 dest.removeListener('close', onclose);
21763 dest.removeListener('finish', onfinish);
21764 dest.removeListener('drain', ondrain);
21765 dest.removeListener('error', onerror);
21766 dest.removeListener('unpipe', onunpipe);
21767 src.removeListener('end', onend);
21768 src.removeListener('end', cleanup);
21769 src.removeListener('data', ondata);
21770
21771 cleanedUp = true;
21772
21773 // if the reader is waiting for a drain event from this
21774 // specific writer, then it would cause it to never start
21775 // flowing again.
21776 // So, if this is awaiting a drain, then we just call it now.
21777 // If we don't know, then assume that we are waiting for one.
21778 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
21779 }
21780
21781 // If the user pushes more data while we're writing to dest then we'll end up
21782 // in ondata again. However, we only want to increase awaitDrain once because
21783 // dest will only emit one 'drain' event for the multiple writes.
21784 // => Introduce a guard on increasing awaitDrain.
21785 var increasedAwaitDrain = false;
21786 src.on('data', ondata);
21787 function ondata(chunk) {
21788 debug('ondata');
21789 increasedAwaitDrain = false;
21790 var ret = dest.write(chunk);
21791 if (false === ret && !increasedAwaitDrain) {
21792 // If the user unpiped during `dest.write()`, it is possible
21793 // to get stuck in a permanently paused state if that write
21794 // also returned false.
21795 // => Check whether `dest` is still a piping destination.
21796 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
21797 debug('false write response, pause', src._readableState.awaitDrain);
21798 src._readableState.awaitDrain++;
21799 increasedAwaitDrain = true;
21800 }
21801 src.pause();
21802 }
21803 }
21804
21805 // if the dest has an error, then stop piping into it.
21806 // however, don't suppress the throwing behavior for this.
21807 function onerror(er) {
21808 debug('onerror', er);
21809 unpipe();
21810 dest.removeListener('error', onerror);
21811 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
21812 }
21813
21814 // Make sure our error handler is attached before userland ones.
21815 prependListener(dest, 'error', onerror);
21816
21817 // Both close and finish should trigger unpipe, but only once.
21818 function onclose() {
21819 dest.removeListener('finish', onfinish);
21820 unpipe();
21821 }
21822 dest.once('close', onclose);
21823 function onfinish() {
21824 debug('onfinish');
21825 dest.removeListener('close', onclose);
21826 unpipe();
21827 }
21828 dest.once('finish', onfinish);
21829
21830 function unpipe() {
21831 debug('unpipe');
21832 src.unpipe(dest);
21833 }
21834
21835 // tell the dest that it's being piped to
21836 dest.emit('pipe', src);
21837
21838 // start the flow if it hasn't been started already.
21839 if (!state.flowing) {
21840 debug('pipe resume');
21841 src.resume();
21842 }
21843
21844 return dest;
21845 };
21846
21847 function pipeOnDrain(src) {
21848 return function () {
21849 var state = src._readableState;
21850 debug('pipeOnDrain', state.awaitDrain);
21851 if (state.awaitDrain) state.awaitDrain--;
21852 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
21853 state.flowing = true;
21854 flow(src);
21855 }
21856 };
21857 }
21858
21859 Readable.prototype.unpipe = function (dest) {
21860 var state = this._readableState;
21861
21862 // if we're not piping anywhere, then do nothing.
21863 if (state.pipesCount === 0) return this;
21864
21865 // just one destination. most common case.
21866 if (state.pipesCount === 1) {
21867 // passed in one, but it's not the right one.
21868 if (dest && dest !== state.pipes) return this;
21869
21870 if (!dest) dest = state.pipes;
21871
21872 // got a match.
21873 state.pipes = null;
21874 state.pipesCount = 0;
21875 state.flowing = false;
21876 if (dest) dest.emit('unpipe', this);
21877 return this;
21878 }
21879
21880 // slow case. multiple pipe destinations.
21881
21882 if (!dest) {
21883 // remove all.
21884 var dests = state.pipes;
21885 var len = state.pipesCount;
21886 state.pipes = null;
21887 state.pipesCount = 0;
21888 state.flowing = false;
21889
21890 for (var i = 0; i < len; i++) {
21891 dests[i].emit('unpipe', this);
21892 }return this;
21893 }
21894
21895 // try to find the right one.
21896 var index = indexOf(state.pipes, dest);
21897 if (index === -1) return this;
21898
21899 state.pipes.splice(index, 1);
21900 state.pipesCount -= 1;
21901 if (state.pipesCount === 1) state.pipes = state.pipes[0];
21902
21903 dest.emit('unpipe', this);
21904
21905 return this;
21906 };
21907
21908 // set up data events if they are asked for
21909 // Ensure readable listeners eventually get something
21910 Readable.prototype.on = function (ev, fn) {
21911 var res = Stream.prototype.on.call(this, ev, fn);
21912
21913 if (ev === 'data') {
21914 // Start flowing on next tick if stream isn't explicitly paused
21915 if (this._readableState.flowing !== false) this.resume();
21916 } else if (ev === 'readable') {
21917 var state = this._readableState;
21918 if (!state.endEmitted && !state.readableListening) {
21919 state.readableListening = state.needReadable = true;
21920 state.emittedReadable = false;
21921 if (!state.reading) {
21922 processNextTick(nReadingNextTick, this);
21923 } else if (state.length) {
21924 emitReadable(this, state);
21925 }
21926 }
21927 }
21928
21929 return res;
21930 };
21931 Readable.prototype.addListener = Readable.prototype.on;
21932
21933 function nReadingNextTick(self) {
21934 debug('readable nexttick read 0');
21935 self.read(0);
21936 }
21937
21938 // pause() and resume() are remnants of the legacy readable stream API
21939 // If the user uses them, then switch into old mode.
21940 Readable.prototype.resume = function () {
21941 var state = this._readableState;
21942 if (!state.flowing) {
21943 debug('resume');
21944 state.flowing = true;
21945 resume(this, state);
21946 }
21947 return this;
21948 };
21949
21950 function resume(stream, state) {
21951 if (!state.resumeScheduled) {
21952 state.resumeScheduled = true;
21953 processNextTick(resume_, stream, state);
21954 }
21955 }
21956
21957 function resume_(stream, state) {
21958 if (!state.reading) {
21959 debug('resume read 0');
21960 stream.read(0);
21961 }
21962
21963 state.resumeScheduled = false;
21964 state.awaitDrain = 0;
21965 stream.emit('resume');
21966 flow(stream);
21967 if (state.flowing && !state.reading) stream.read(0);
21968 }
21969
21970 Readable.prototype.pause = function () {
21971 debug('call pause flowing=%j', this._readableState.flowing);
21972 if (false !== this._readableState.flowing) {
21973 debug('pause');
21974 this._readableState.flowing = false;
21975 this.emit('pause');
21976 }
21977 return this;
21978 };
21979
21980 function flow(stream) {
21981 var state = stream._readableState;
21982 debug('flow', state.flowing);
21983 while (state.flowing && stream.read() !== null) {}
21984 }
21985
21986 // wrap an old-style stream as the async data source.
21987 // This is *not* part of the readable stream interface.
21988 // It is an ugly unfortunate mess of history.
21989 Readable.prototype.wrap = function (stream) {
21990 var state = this._readableState;
21991 var paused = false;
21992
21993 var self = this;
21994 stream.on('end', function () {
21995 debug('wrapped end');
21996 if (state.decoder && !state.ended) {
21997 var chunk = state.decoder.end();
21998 if (chunk && chunk.length) self.push(chunk);
21999 }
22000
22001 self.push(null);
22002 });
22003
22004 stream.on('data', function (chunk) {
22005 debug('wrapped data');
22006 if (state.decoder) chunk = state.decoder.write(chunk);
22007
22008 // don't skip over falsy values in objectMode
22009 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
22010
22011 var ret = self.push(chunk);
22012 if (!ret) {
22013 paused = true;
22014 stream.pause();
22015 }
22016 });
22017
22018 // proxy all the other methods.
22019 // important when wrapping filters and duplexes.
22020 for (var i in stream) {
22021 if (this[i] === undefined && typeof stream[i] === 'function') {
22022 this[i] = function (method) {
22023 return function () {
22024 return stream[method].apply(stream, arguments);
22025 };
22026 }(i);
22027 }
22028 }
22029
22030 // proxy certain important events.
22031 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
22032 forEach(events, function (ev) {
22033 stream.on(ev, self.emit.bind(self, ev));
22034 });
22035
22036 // when we try to consume some more bytes, simply unpause the
22037 // underlying stream.
22038 self._read = function (n) {
22039 debug('wrapped _read', n);
22040 if (paused) {
22041 paused = false;
22042 stream.resume();
22043 }
22044 };
22045
22046 return self;
22047 };
22048
22049 // exposed for testing purposes only.
22050 Readable._fromList = fromList;
22051
22052 // Pluck off n bytes from an array of buffers.
22053 // Length is the combined lengths of all the buffers in the list.
22054 // This function is designed to be inlinable, so please take care when making
22055 // changes to the function body.
22056 function fromList(n, state) {
22057 // nothing buffered
22058 if (state.length === 0) return null;
22059
22060 var ret;
22061 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
22062 // read it all, truncate the list
22063 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);
22064 state.buffer.clear();
22065 } else {
22066 // read part of list
22067 ret = fromListPartial(n, state.buffer, state.decoder);
22068 }
22069
22070 return ret;
22071 }
22072
22073 // Extracts only enough buffered data to satisfy the amount requested.
22074 // This function is designed to be inlinable, so please take care when making
22075 // changes to the function body.
22076 function fromListPartial(n, list, hasStrings) {
22077 var ret;
22078 if (n < list.head.data.length) {
22079 // slice is the same for buffers and strings
22080 ret = list.head.data.slice(0, n);
22081 list.head.data = list.head.data.slice(n);
22082 } else if (n === list.head.data.length) {
22083 // first chunk is a perfect match
22084 ret = list.shift();
22085 } else {
22086 // result spans more than one buffer
22087 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
22088 }
22089 return ret;
22090 }
22091
22092 // Copies a specified amount of characters from the list of buffered data
22093 // chunks.
22094 // This function is designed to be inlinable, so please take care when making
22095 // changes to the function body.
22096 function copyFromBufferString(n, list) {
22097 var p = list.head;
22098 var c = 1;
22099 var ret = p.data;
22100 n -= ret.length;
22101 while (p = p.next) {
22102 var str = p.data;
22103 var nb = n > str.length ? str.length : n;
22104 if (nb === str.length) ret += str;else ret += str.slice(0, n);
22105 n -= nb;
22106 if (n === 0) {
22107 if (nb === str.length) {
22108 ++c;
22109 if (p.next) list.head = p.next;else list.head = list.tail = null;
22110 } else {
22111 list.head = p;
22112 p.data = str.slice(nb);
22113 }
22114 break;
22115 }
22116 ++c;
22117 }
22118 list.length -= c;
22119 return ret;
22120 }
22121
22122 // Copies a specified amount of bytes from the list of buffered data chunks.
22123 // This function is designed to be inlinable, so please take care when making
22124 // changes to the function body.
22125 function copyFromBuffer(n, list) {
22126 var ret = bufferShim.allocUnsafe(n);
22127 var p = list.head;
22128 var c = 1;
22129 p.data.copy(ret);
22130 n -= p.data.length;
22131 while (p = p.next) {
22132 var buf = p.data;
22133 var nb = n > buf.length ? buf.length : n;
22134 buf.copy(ret, ret.length - n, 0, nb);
22135 n -= nb;
22136 if (n === 0) {
22137 if (nb === buf.length) {
22138 ++c;
22139 if (p.next) list.head = p.next;else list.head = list.tail = null;
22140 } else {
22141 list.head = p;
22142 p.data = buf.slice(nb);
22143 }
22144 break;
22145 }
22146 ++c;
22147 }
22148 list.length -= c;
22149 return ret;
22150 }
22151
22152 function endReadable(stream) {
22153 var state = stream._readableState;
22154
22155 // If we get here before consuming all the bytes, then that is a
22156 // bug in node. Should never happen.
22157 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
22158
22159 if (!state.endEmitted) {
22160 state.ended = true;
22161 processNextTick(endReadableNT, state, stream);
22162 }
22163 }
22164
22165 function endReadableNT(state, stream) {
22166 // Check that we didn't get one last unshift.
22167 if (!state.endEmitted && state.length === 0) {
22168 state.endEmitted = true;
22169 stream.readable = false;
22170 stream.emit('end');
22171 }
22172 }
22173
22174 function forEach(xs, f) {
22175 for (var i = 0, l = xs.length; i < l; i++) {
22176 f(xs[i], i);
22177 }
22178 }
22179
22180 function indexOf(xs, x) {
22181 for (var i = 0, l = xs.length; i < l; i++) {
22182 if (xs[i] === x) return i;
22183 }
22184 return -1;
22185 }
22186 }).call(this,require('_process'))
22187 },{"./_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){
22188 // a transform stream is a readable/writable stream where you do
22189 // something with the data. Sometimes it's called a "filter",
22190 // but that's not a great name for it, since that implies a thing where
22191 // some bits pass through, and others are simply ignored. (That would
22192 // be a valid example of a transform, of course.)
22193 //
22194 // While the output is causally related to the input, it's not a
22195 // necessarily symmetric or synchronous transformation. For example,
22196 // a zlib stream might take multiple plain-text writes(), and then
22197 // emit a single compressed chunk some time in the future.
22198 //
22199 // Here's how this works:
22200 //
22201 // The Transform stream has all the aspects of the readable and writable
22202 // stream classes. When you write(chunk), that calls _write(chunk,cb)
22203 // internally, and returns false if there's a lot of pending writes
22204 // buffered up. When you call read(), that calls _read(n) until
22205 // there's enough pending readable data buffered up.
22206 //
22207 // In a transform stream, the written data is placed in a buffer. When
22208 // _read(n) is called, it transforms the queued up data, calling the
22209 // buffered _write cb's as it consumes chunks. If consuming a single
22210 // written chunk would result in multiple output chunks, then the first
22211 // outputted bit calls the readcb, and subsequent chunks just go into
22212 // the read buffer, and will cause it to emit 'readable' if necessary.
22213 //
22214 // This way, back-pressure is actually determined by the reading side,
22215 // since _read has to be called to start processing a new chunk. However,
22216 // a pathological inflate type of transform can cause excessive buffering
22217 // here. For example, imagine a stream where every byte of input is
22218 // interpreted as an integer from 0-255, and then results in that many
22219 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
22220 // 1kb of data being output. In this case, you could write a very small
22221 // amount of input, and end up with a very large amount of output. In
22222 // such a pathological inflating mechanism, there'd be no way to tell
22223 // the system to stop doing the transform. A single 4MB write could
22224 // cause the system to run out of memory.
22225 //
22226 // However, even in such a pathological case, only a single written chunk
22227 // would be consumed, and then the rest would wait (un-transformed) until
22228 // the results of the previous transformed chunk were consumed.
22229
22230 'use strict';
22231
22232 module.exports = Transform;
22233
22234 var Duplex = require('./_stream_duplex');
22235
22236 /*<replacement>*/
22237 var util = require('core-util-is');
22238 util.inherits = require('inherits');
22239 /*</replacement>*/
22240
22241 util.inherits(Transform, Duplex);
22242
22243 function TransformState(stream) {
22244 this.afterTransform = function (er, data) {
22245 return afterTransform(stream, er, data);
22246 };
22247
22248 this.needTransform = false;
22249 this.transforming = false;
22250 this.writecb = null;
22251 this.writechunk = null;
22252 this.writeencoding = null;
22253 }
22254
22255 function afterTransform(stream, er, data) {
22256 var ts = stream._transformState;
22257 ts.transforming = false;
22258
22259 var cb = ts.writecb;
22260
22261 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
22262
22263 ts.writechunk = null;
22264 ts.writecb = null;
22265
22266 if (data !== null && data !== undefined) stream.push(data);
22267
22268 cb(er);
22269
22270 var rs = stream._readableState;
22271 rs.reading = false;
22272 if (rs.needReadable || rs.length < rs.highWaterMark) {
22273 stream._read(rs.highWaterMark);
22274 }
22275 }
22276
22277 function Transform(options) {
22278 if (!(this instanceof Transform)) return new Transform(options);
22279
22280 Duplex.call(this, options);
22281
22282 this._transformState = new TransformState(this);
22283
22284 var stream = this;
22285
22286 // start out asking for a readable event once data is transformed.
22287 this._readableState.needReadable = true;
22288
22289 // we have implemented the _read method, and done the other things
22290 // that Readable wants before the first _read call, so unset the
22291 // sync guard flag.
22292 this._readableState.sync = false;
22293
22294 if (options) {
22295 if (typeof options.transform === 'function') this._transform = options.transform;
22296
22297 if (typeof options.flush === 'function') this._flush = options.flush;
22298 }
22299
22300 // When the writable side finishes, then flush out anything remaining.
22301 this.once('prefinish', function () {
22302 if (typeof this._flush === 'function') this._flush(function (er, data) {
22303 done(stream, er, data);
22304 });else done(stream);
22305 });
22306 }
22307
22308 Transform.prototype.push = function (chunk, encoding) {
22309 this._transformState.needTransform = false;
22310 return Duplex.prototype.push.call(this, chunk, encoding);
22311 };
22312
22313 // This is the part where you do stuff!
22314 // override this function in implementation classes.
22315 // 'chunk' is an input chunk.
22316 //
22317 // Call `push(newChunk)` to pass along transformed output
22318 // to the readable side. You may call 'push' zero or more times.
22319 //
22320 // Call `cb(err)` when you are done with this chunk. If you pass
22321 // an error, then that'll put the hurt on the whole operation. If you
22322 // never call cb(), then you'll never get another chunk.
22323 Transform.prototype._transform = function (chunk, encoding, cb) {
22324 throw new Error('_transform() is not implemented');
22325 };
22326
22327 Transform.prototype._write = function (chunk, encoding, cb) {
22328 var ts = this._transformState;
22329 ts.writecb = cb;
22330 ts.writechunk = chunk;
22331 ts.writeencoding = encoding;
22332 if (!ts.transforming) {
22333 var rs = this._readableState;
22334 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
22335 }
22336 };
22337
22338 // Doesn't matter what the args are here.
22339 // _transform does all the work.
22340 // That we got here means that the readable side wants more data.
22341 Transform.prototype._read = function (n) {
22342 var ts = this._transformState;
22343
22344 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
22345 ts.transforming = true;
22346 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
22347 } else {
22348 // mark that we need a transform, so that any data that comes in
22349 // will get processed, now that we've asked for it.
22350 ts.needTransform = true;
22351 }
22352 };
22353
22354 function done(stream, er, data) {
22355 if (er) return stream.emit('error', er);
22356
22357 if (data !== null && data !== undefined) stream.push(data);
22358
22359 // if there's nothing in the write buffer, then that means
22360 // that nothing more will ever be provided
22361 var ws = stream._writableState;
22362 var ts = stream._transformState;
22363
22364 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
22365
22366 if (ts.transforming) throw new Error('Calling transform done when still transforming');
22367
22368 return stream.push(null);
22369 }
22370 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
22371 (function (process){
22372 // A bit simpler than readable streams.
22373 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
22374 // the drain event emission and buffering.
22375
22376 'use strict';
22377
22378 module.exports = Writable;
22379
22380 /*<replacement>*/
22381 var processNextTick = require('process-nextick-args');
22382 /*</replacement>*/
22383
22384 /*<replacement>*/
22385 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
22386 /*</replacement>*/
22387
22388 /*<replacement>*/
22389 var Duplex;
22390 /*</replacement>*/
22391
22392 Writable.WritableState = WritableState;
22393
22394 /*<replacement>*/
22395 var util = require('core-util-is');
22396 util.inherits = require('inherits');
22397 /*</replacement>*/
22398
22399 /*<replacement>*/
22400 var internalUtil = {
22401 deprecate: require('util-deprecate')
22402 };
22403 /*</replacement>*/
22404
22405 /*<replacement>*/
22406 var Stream;
22407 (function () {
22408 try {
22409 Stream = require('st' + 'ream');
22410 } catch (_) {} finally {
22411 if (!Stream) Stream = require('events').EventEmitter;
22412 }
22413 })();
22414 /*</replacement>*/
22415
22416 var Buffer = require('buffer').Buffer;
22417 /*<replacement>*/
22418 var bufferShim = require('buffer-shims');
22419 /*</replacement>*/
22420
22421 util.inherits(Writable, Stream);
22422
22423 function nop() {}
22424
22425 function WriteReq(chunk, encoding, cb) {
22426 this.chunk = chunk;
22427 this.encoding = encoding;
22428 this.callback = cb;
22429 this.next = null;
22430 }
22431
22432 function WritableState(options, stream) {
22433 Duplex = Duplex || require('./_stream_duplex');
22434
22435 options = options || {};
22436
22437 // object stream flag to indicate whether or not this stream
22438 // contains buffers or objects.
22439 this.objectMode = !!options.objectMode;
22440
22441 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
22442
22443 // the point at which write() starts returning false
22444 // Note: 0 is a valid value, means that we always return false if
22445 // the entire buffer is not flushed immediately on write()
22446 var hwm = options.highWaterMark;
22447 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
22448 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
22449
22450 // cast to ints.
22451 this.highWaterMark = ~ ~this.highWaterMark;
22452
22453 // drain event flag.
22454 this.needDrain = false;
22455 // at the start of calling end()
22456 this.ending = false;
22457 // when end() has been called, and returned
22458 this.ended = false;
22459 // when 'finish' is emitted
22460 this.finished = false;
22461
22462 // should we decode strings into buffers before passing to _write?
22463 // this is here so that some node-core streams can optimize string
22464 // handling at a lower level.
22465 var noDecode = options.decodeStrings === false;
22466 this.decodeStrings = !noDecode;
22467
22468 // Crypto is kind of old and crusty. Historically, its default string
22469 // encoding is 'binary' so we have to make this configurable.
22470 // Everything else in the universe uses 'utf8', though.
22471 this.defaultEncoding = options.defaultEncoding || 'utf8';
22472
22473 // not an actual buffer we keep track of, but a measurement
22474 // of how much we're waiting to get pushed to some underlying
22475 // socket or file.
22476 this.length = 0;
22477
22478 // a flag to see when we're in the middle of a write.
22479 this.writing = false;
22480
22481 // when true all writes will be buffered until .uncork() call
22482 this.corked = 0;
22483
22484 // a flag to be able to tell if the onwrite cb is called immediately,
22485 // or on a later tick. We set this to true at first, because any
22486 // actions that shouldn't happen until "later" should generally also
22487 // not happen before the first write call.
22488 this.sync = true;
22489
22490 // a flag to know if we're processing previously buffered items, which
22491 // may call the _write() callback in the same tick, so that we don't
22492 // end up in an overlapped onwrite situation.
22493 this.bufferProcessing = false;
22494
22495 // the callback that's passed to _write(chunk,cb)
22496 this.onwrite = function (er) {
22497 onwrite(stream, er);
22498 };
22499
22500 // the callback that the user supplies to write(chunk,encoding,cb)
22501 this.writecb = null;
22502
22503 // the amount that is being written when _write is called.
22504 this.writelen = 0;
22505
22506 this.bufferedRequest = null;
22507 this.lastBufferedRequest = null;
22508
22509 // number of pending user-supplied write callbacks
22510 // this must be 0 before 'finish' can be emitted
22511 this.pendingcb = 0;
22512
22513 // emit prefinish if the only thing we're waiting for is _write cbs
22514 // This is relevant for synchronous Transform streams
22515 this.prefinished = false;
22516
22517 // True if the error was already emitted and should not be thrown again
22518 this.errorEmitted = false;
22519
22520 // count buffered requests
22521 this.bufferedRequestCount = 0;
22522
22523 // allocate the first CorkedRequest, there is always
22524 // one allocated and free to use, and we maintain at most two
22525 this.corkedRequestsFree = new CorkedRequest(this);
22526 }
22527
22528 WritableState.prototype.getBuffer = function getBuffer() {
22529 var current = this.bufferedRequest;
22530 var out = [];
22531 while (current) {
22532 out.push(current);
22533 current = current.next;
22534 }
22535 return out;
22536 };
22537
22538 (function () {
22539 try {
22540 Object.defineProperty(WritableState.prototype, 'buffer', {
22541 get: internalUtil.deprecate(function () {
22542 return this.getBuffer();
22543 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
22544 });
22545 } catch (_) {}
22546 })();
22547
22548 // Test _writableState for inheritance to account for Duplex streams,
22549 // whose prototype chain only points to Readable.
22550 var realHasInstance;
22551 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
22552 realHasInstance = Function.prototype[Symbol.hasInstance];
22553 Object.defineProperty(Writable, Symbol.hasInstance, {
22554 value: function (object) {
22555 if (realHasInstance.call(this, object)) return true;
22556
22557 return object && object._writableState instanceof WritableState;
22558 }
22559 });
22560 } else {
22561 realHasInstance = function (object) {
22562 return object instanceof this;
22563 };
22564 }
22565
22566 function Writable(options) {
22567 Duplex = Duplex || require('./_stream_duplex');
22568
22569 // Writable ctor is applied to Duplexes, too.
22570 // `realHasInstance` is necessary because using plain `instanceof`
22571 // would return false, as no `_writableState` property is attached.
22572
22573 // Trying to use the custom `instanceof` for Writable here will also break the
22574 // Node.js LazyTransform implementation, which has a non-trivial getter for
22575 // `_writableState` that would lead to infinite recursion.
22576 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
22577 return new Writable(options);
22578 }
22579
22580 this._writableState = new WritableState(options, this);
22581
22582 // legacy.
22583 this.writable = true;
22584
22585 if (options) {
22586 if (typeof options.write === 'function') this._write = options.write;
22587
22588 if (typeof options.writev === 'function') this._writev = options.writev;
22589 }
22590
22591 Stream.call(this);
22592 }
22593
22594 // Otherwise people can pipe Writable streams, which is just wrong.
22595 Writable.prototype.pipe = function () {
22596 this.emit('error', new Error('Cannot pipe, not readable'));
22597 };
22598
22599 function writeAfterEnd(stream, cb) {
22600 var er = new Error('write after end');
22601 // TODO: defer error events consistently everywhere, not just the cb
22602 stream.emit('error', er);
22603 processNextTick(cb, er);
22604 }
22605
22606 // If we get something that is not a buffer, string, null, or undefined,
22607 // and we're not in objectMode, then that's an error.
22608 // Otherwise stream chunks are all considered to be of length=1, and the
22609 // watermarks determine how many objects to keep in the buffer, rather than
22610 // how many bytes or characters.
22611 function validChunk(stream, state, chunk, cb) {
22612 var valid = true;
22613 var er = false;
22614 // Always throw error if a null is written
22615 // if we are not in object mode then throw
22616 // if it is not a buffer, string, or undefined.
22617 if (chunk === null) {
22618 er = new TypeError('May not write null values to stream');
22619 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
22620 er = new TypeError('Invalid non-string/buffer chunk');
22621 }
22622 if (er) {
22623 stream.emit('error', er);
22624 processNextTick(cb, er);
22625 valid = false;
22626 }
22627 return valid;
22628 }
22629
22630 Writable.prototype.write = function (chunk, encoding, cb) {
22631 var state = this._writableState;
22632 var ret = false;
22633
22634 if (typeof encoding === 'function') {
22635 cb = encoding;
22636 encoding = null;
22637 }
22638
22639 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
22640
22641 if (typeof cb !== 'function') cb = nop;
22642
22643 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
22644 state.pendingcb++;
22645 ret = writeOrBuffer(this, state, chunk, encoding, cb);
22646 }
22647
22648 return ret;
22649 };
22650
22651 Writable.prototype.cork = function () {
22652 var state = this._writableState;
22653
22654 state.corked++;
22655 };
22656
22657 Writable.prototype.uncork = function () {
22658 var state = this._writableState;
22659
22660 if (state.corked) {
22661 state.corked--;
22662
22663 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
22664 }
22665 };
22666
22667 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
22668 // node::ParseEncoding() requires lower case.
22669 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
22670 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);
22671 this._writableState.defaultEncoding = encoding;
22672 return this;
22673 };
22674
22675 function decodeChunk(state, chunk, encoding) {
22676 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
22677 chunk = bufferShim.from(chunk, encoding);
22678 }
22679 return chunk;
22680 }
22681
22682 // if we're already writing something, then just put this
22683 // in the queue, and wait our turn. Otherwise, call _write
22684 // If we return false, then we need a drain event, so set that flag.
22685 function writeOrBuffer(stream, state, chunk, encoding, cb) {
22686 chunk = decodeChunk(state, chunk, encoding);
22687
22688 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
22689 var len = state.objectMode ? 1 : chunk.length;
22690
22691 state.length += len;
22692
22693 var ret = state.length < state.highWaterMark;
22694 // we must ensure that previous needDrain will not be reset to false.
22695 if (!ret) state.needDrain = true;
22696
22697 if (state.writing || state.corked) {
22698 var last = state.lastBufferedRequest;
22699 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
22700 if (last) {
22701 last.next = state.lastBufferedRequest;
22702 } else {
22703 state.bufferedRequest = state.lastBufferedRequest;
22704 }
22705 state.bufferedRequestCount += 1;
22706 } else {
22707 doWrite(stream, state, false, len, chunk, encoding, cb);
22708 }
22709
22710 return ret;
22711 }
22712
22713 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
22714 state.writelen = len;
22715 state.writecb = cb;
22716 state.writing = true;
22717 state.sync = true;
22718 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
22719 state.sync = false;
22720 }
22721
22722 function onwriteError(stream, state, sync, er, cb) {
22723 --state.pendingcb;
22724 if (sync) processNextTick(cb, er);else cb(er);
22725
22726 stream._writableState.errorEmitted = true;
22727 stream.emit('error', er);
22728 }
22729
22730 function onwriteStateUpdate(state) {
22731 state.writing = false;
22732 state.writecb = null;
22733 state.length -= state.writelen;
22734 state.writelen = 0;
22735 }
22736
22737 function onwrite(stream, er) {
22738 var state = stream._writableState;
22739 var sync = state.sync;
22740 var cb = state.writecb;
22741
22742 onwriteStateUpdate(state);
22743
22744 if (er) onwriteError(stream, state, sync, er, cb);else {
22745 // Check if we're actually ready to finish, but don't emit yet
22746 var finished = needFinish(state);
22747
22748 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
22749 clearBuffer(stream, state);
22750 }
22751
22752 if (sync) {
22753 /*<replacement>*/
22754 asyncWrite(afterWrite, stream, state, finished, cb);
22755 /*</replacement>*/
22756 } else {
22757 afterWrite(stream, state, finished, cb);
22758 }
22759 }
22760 }
22761
22762 function afterWrite(stream, state, finished, cb) {
22763 if (!finished) onwriteDrain(stream, state);
22764 state.pendingcb--;
22765 cb();
22766 finishMaybe(stream, state);
22767 }
22768
22769 // Must force callback to be called on nextTick, so that we don't
22770 // emit 'drain' before the write() consumer gets the 'false' return
22771 // value, and has a chance to attach a 'drain' listener.
22772 function onwriteDrain(stream, state) {
22773 if (state.length === 0 && state.needDrain) {
22774 state.needDrain = false;
22775 stream.emit('drain');
22776 }
22777 }
22778
22779 // if there's something in the buffer waiting, then process it
22780 function clearBuffer(stream, state) {
22781 state.bufferProcessing = true;
22782 var entry = state.bufferedRequest;
22783
22784 if (stream._writev && entry && entry.next) {
22785 // Fast case, write everything using _writev()
22786 var l = state.bufferedRequestCount;
22787 var buffer = new Array(l);
22788 var holder = state.corkedRequestsFree;
22789 holder.entry = entry;
22790
22791 var count = 0;
22792 while (entry) {
22793 buffer[count] = entry;
22794 entry = entry.next;
22795 count += 1;
22796 }
22797
22798 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
22799
22800 // doWrite is almost always async, defer these to save a bit of time
22801 // as the hot path ends with doWrite
22802 state.pendingcb++;
22803 state.lastBufferedRequest = null;
22804 if (holder.next) {
22805 state.corkedRequestsFree = holder.next;
22806 holder.next = null;
22807 } else {
22808 state.corkedRequestsFree = new CorkedRequest(state);
22809 }
22810 } else {
22811 // Slow case, write chunks one-by-one
22812 while (entry) {
22813 var chunk = entry.chunk;
22814 var encoding = entry.encoding;
22815 var cb = entry.callback;
22816 var len = state.objectMode ? 1 : chunk.length;
22817
22818 doWrite(stream, state, false, len, chunk, encoding, cb);
22819 entry = entry.next;
22820 // if we didn't call the onwrite immediately, then
22821 // it means that we need to wait until it does.
22822 // also, that means that the chunk and cb are currently
22823 // being processed, so move the buffer counter past them.
22824 if (state.writing) {
22825 break;
22826 }
22827 }
22828
22829 if (entry === null) state.lastBufferedRequest = null;
22830 }
22831
22832 state.bufferedRequestCount = 0;
22833 state.bufferedRequest = entry;
22834 state.bufferProcessing = false;
22835 }
22836
22837 Writable.prototype._write = function (chunk, encoding, cb) {
22838 cb(new Error('_write() is not implemented'));
22839 };
22840
22841 Writable.prototype._writev = null;
22842
22843 Writable.prototype.end = function (chunk, encoding, cb) {
22844 var state = this._writableState;
22845
22846 if (typeof chunk === 'function') {
22847 cb = chunk;
22848 chunk = null;
22849 encoding = null;
22850 } else if (typeof encoding === 'function') {
22851 cb = encoding;
22852 encoding = null;
22853 }
22854
22855 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
22856
22857 // .end() fully uncorks
22858 if (state.corked) {
22859 state.corked = 1;
22860 this.uncork();
22861 }
22862
22863 // ignore unnecessary end() calls.
22864 if (!state.ending && !state.finished) endWritable(this, state, cb);
22865 };
22866
22867 function needFinish(state) {
22868 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
22869 }
22870
22871 function prefinish(stream, state) {
22872 if (!state.prefinished) {
22873 state.prefinished = true;
22874 stream.emit('prefinish');
22875 }
22876 }
22877
22878 function finishMaybe(stream, state) {
22879 var need = needFinish(state);
22880 if (need) {
22881 if (state.pendingcb === 0) {
22882 prefinish(stream, state);
22883 state.finished = true;
22884 stream.emit('finish');
22885 } else {
22886 prefinish(stream, state);
22887 }
22888 }
22889 return need;
22890 }
22891
22892 function endWritable(stream, state, cb) {
22893 state.ending = true;
22894 finishMaybe(stream, state);
22895 if (cb) {
22896 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
22897 }
22898 state.ended = true;
22899 stream.writable = false;
22900 }
22901
22902 // It seems a linked list but it is not
22903 // there will be only 2 of these for each stream
22904 function CorkedRequest(state) {
22905 var _this = this;
22906
22907 this.next = null;
22908 this.entry = null;
22909
22910 this.finish = function (err) {
22911 var entry = _this.entry;
22912 _this.entry = null;
22913 while (entry) {
22914 var cb = entry.callback;
22915 state.pendingcb--;
22916 cb(err);
22917 entry = entry.next;
22918 }
22919 if (state.corkedRequestsFree) {
22920 state.corkedRequestsFree.next = _this;
22921 } else {
22922 state.corkedRequestsFree = _this;
22923 }
22924 };
22925 }
22926 }).call(this,require('_process'))
22927 },{"./_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){
22928 'use strict';
22929
22930 var Buffer = require('buffer').Buffer;
22931 /*<replacement>*/
22932 var bufferShim = require('buffer-shims');
22933 /*</replacement>*/
22934
22935 module.exports = BufferList;
22936
22937 function BufferList() {
22938 this.head = null;
22939 this.tail = null;
22940 this.length = 0;
22941 }
22942
22943 BufferList.prototype.push = function (v) {
22944 var entry = { data: v, next: null };
22945 if (this.length > 0) this.tail.next = entry;else this.head = entry;
22946 this.tail = entry;
22947 ++this.length;
22948 };
22949
22950 BufferList.prototype.unshift = function (v) {
22951 var entry = { data: v, next: this.head };
22952 if (this.length === 0) this.tail = entry;
22953 this.head = entry;
22954 ++this.length;
22955 };
22956
22957 BufferList.prototype.shift = function () {
22958 if (this.length === 0) return;
22959 var ret = this.head.data;
22960 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
22961 --this.length;
22962 return ret;
22963 };
22964
22965 BufferList.prototype.clear = function () {
22966 this.head = this.tail = null;
22967 this.length = 0;
22968 };
22969
22970 BufferList.prototype.join = function (s) {
22971 if (this.length === 0) return '';
22972 var p = this.head;
22973 var ret = '' + p.data;
22974 while (p = p.next) {
22975 ret += s + p.data;
22976 }return ret;
22977 };
22978
22979 BufferList.prototype.concat = function (n) {
22980 if (this.length === 0) return bufferShim.alloc(0);
22981 if (this.length === 1) return this.head.data;
22982 var ret = bufferShim.allocUnsafe(n >>> 0);
22983 var p = this.head;
22984 var i = 0;
22985 while (p) {
22986 p.data.copy(ret, i);
22987 i += p.data.length;
22988 p = p.next;
22989 }
22990 return ret;
22991 };
22992 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
22993 module.exports = require("./lib/_stream_passthrough.js")
22994
22995 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
22996 (function (process){
22997 var Stream = (function (){
22998 try {
22999 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
23000 } catch(_){}
23001 }());
23002 exports = module.exports = require('./lib/_stream_readable.js');
23003 exports.Stream = Stream || exports;
23004 exports.Readable = exports;
23005 exports.Writable = require('./lib/_stream_writable.js');
23006 exports.Duplex = require('./lib/_stream_duplex.js');
23007 exports.Transform = require('./lib/_stream_transform.js');
23008 exports.PassThrough = require('./lib/_stream_passthrough.js');
23009
23010 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
23011 module.exports = Stream;
23012 }
23013
23014 }).call(this,require('_process'))
23015 },{"./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){
23016 module.exports = require("./lib/_stream_transform.js")
23017
23018 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
23019 module.exports = require("./lib/_stream_writable.js")
23020
23021 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
23022 // Copyright Joyent, Inc. and other Node contributors.
23023 //
23024 // Permission is hereby granted, free of charge, to any person obtaining a
23025 // copy of this software and associated documentation files (the
23026 // "Software"), to deal in the Software without restriction, including
23027 // without limitation the rights to use, copy, modify, merge, publish,
23028 // distribute, sublicense, and/or sell copies of the Software, and to permit
23029 // persons to whom the Software is furnished to do so, subject to the
23030 // following conditions:
23031 //
23032 // The above copyright notice and this permission notice shall be included
23033 // in all copies or substantial portions of the Software.
23034 //
23035 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23036 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23037 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23038 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23039 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23040 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23041 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23042
23043 module.exports = Stream;
23044
23045 var EE = require('events').EventEmitter;
23046 var inherits = require('inherits');
23047
23048 inherits(Stream, EE);
23049 Stream.Readable = require('readable-stream/readable.js');
23050 Stream.Writable = require('readable-stream/writable.js');
23051 Stream.Duplex = require('readable-stream/duplex.js');
23052 Stream.Transform = require('readable-stream/transform.js');
23053 Stream.PassThrough = require('readable-stream/passthrough.js');
23054
23055 // Backwards-compat with node 0.4.x
23056 Stream.Stream = Stream;
23057
23058
23059
23060 // old-style streams. Note that the pipe method (the only relevant
23061 // part of this class) is overridden in the Readable class.
23062
23063 function Stream() {
23064 EE.call(this);
23065 }
23066
23067 Stream.prototype.pipe = function(dest, options) {
23068 var source = this;
23069
23070 function ondata(chunk) {
23071 if (dest.writable) {
23072 if (false === dest.write(chunk) && source.pause) {
23073 source.pause();
23074 }
23075 }
23076 }
23077
23078 source.on('data', ondata);
23079
23080 function ondrain() {
23081 if (source.readable && source.resume) {
23082 source.resume();
23083 }
23084 }
23085
23086 dest.on('drain', ondrain);
23087
23088 // If the 'end' option is not supplied, dest.end() will be called when
23089 // source gets the 'end' or 'close' events. Only dest.end() once.
23090 if (!dest._isStdio && (!options || options.end !== false)) {
23091 source.on('end', onend);
23092 source.on('close', onclose);
23093 }
23094
23095 var didOnEnd = false;
23096 function onend() {
23097 if (didOnEnd) return;
23098 didOnEnd = true;
23099
23100 dest.end();
23101 }
23102
23103
23104 function onclose() {
23105 if (didOnEnd) return;
23106 didOnEnd = true;
23107
23108 if (typeof dest.destroy === 'function') dest.destroy();
23109 }
23110
23111 // don't leave dangling pipes when there are errors.
23112 function onerror(er) {
23113 cleanup();
23114 if (EE.listenerCount(this, 'error') === 0) {
23115 throw er; // Unhandled stream error in pipe.
23116 }
23117 }
23118
23119 source.on('error', onerror);
23120 dest.on('error', onerror);
23121
23122 // remove all the event listeners that were added.
23123 function cleanup() {
23124 source.removeListener('data', ondata);
23125 dest.removeListener('drain', ondrain);
23126
23127 source.removeListener('end', onend);
23128 source.removeListener('close', onclose);
23129
23130 source.removeListener('error', onerror);
23131 dest.removeListener('error', onerror);
23132
23133 source.removeListener('end', cleanup);
23134 source.removeListener('close', cleanup);
23135
23136 dest.removeListener('close', cleanup);
23137 }
23138
23139 source.on('end', cleanup);
23140 source.on('close', cleanup);
23141
23142 dest.on('close', cleanup);
23143
23144 dest.emit('pipe', source);
23145
23146 // Allow for unix-like usage: A.pipe(B).pipe(C)
23147 return dest;
23148 };
23149
23150 },{"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){
23151 // Copyright Joyent, Inc. and other Node contributors.
23152 //
23153 // Permission is hereby granted, free of charge, to any person obtaining a
23154 // copy of this software and associated documentation files (the
23155 // "Software"), to deal in the Software without restriction, including
23156 // without limitation the rights to use, copy, modify, merge, publish,
23157 // distribute, sublicense, and/or sell copies of the Software, and to permit
23158 // persons to whom the Software is furnished to do so, subject to the
23159 // following conditions:
23160 //
23161 // The above copyright notice and this permission notice shall be included
23162 // in all copies or substantial portions of the Software.
23163 //
23164 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23165 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23166 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23167 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23168 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23169 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23170 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23171
23172 var Buffer = require('buffer').Buffer;
23173
23174 var isBufferEncoding = Buffer.isEncoding
23175 || function(encoding) {
23176 switch (encoding && encoding.toLowerCase()) {
23177 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;
23178 default: return false;
23179 }
23180 }
23181
23182
23183 function assertEncoding(encoding) {
23184 if (encoding && !isBufferEncoding(encoding)) {
23185 throw new Error('Unknown encoding: ' + encoding);
23186 }
23187 }
23188
23189 // StringDecoder provides an interface for efficiently splitting a series of
23190 // buffers into a series of JS strings without breaking apart multi-byte
23191 // characters. CESU-8 is handled as part of the UTF-8 encoding.
23192 //
23193 // @TODO Handling all encodings inside a single object makes it very difficult
23194 // to reason about this code, so it should be split up in the future.
23195 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
23196 // points as used by CESU-8.
23197 var StringDecoder = exports.StringDecoder = function(encoding) {
23198 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
23199 assertEncoding(encoding);
23200 switch (this.encoding) {
23201 case 'utf8':
23202 // CESU-8 represents each of Surrogate Pair by 3-bytes
23203 this.surrogateSize = 3;
23204 break;
23205 case 'ucs2':
23206 case 'utf16le':
23207 // UTF-16 represents each of Surrogate Pair by 2-bytes
23208 this.surrogateSize = 2;
23209 this.detectIncompleteChar = utf16DetectIncompleteChar;
23210 break;
23211 case 'base64':
23212 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
23213 this.surrogateSize = 3;
23214 this.detectIncompleteChar = base64DetectIncompleteChar;
23215 break;
23216 default:
23217 this.write = passThroughWrite;
23218 return;
23219 }
23220
23221 // Enough space to store all bytes of a single character. UTF-8 needs 4
23222 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
23223 this.charBuffer = new Buffer(6);
23224 // Number of bytes received for the current incomplete multi-byte character.
23225 this.charReceived = 0;
23226 // Number of bytes expected for the current incomplete multi-byte character.
23227 this.charLength = 0;
23228 };
23229
23230
23231 // write decodes the given buffer and returns it as JS string that is
23232 // guaranteed to not contain any partial multi-byte characters. Any partial
23233 // character found at the end of the buffer is buffered up, and will be
23234 // returned when calling write again with the remaining bytes.
23235 //
23236 // Note: Converting a Buffer containing an orphan surrogate to a String
23237 // currently works, but converting a String to a Buffer (via `new Buffer`, or
23238 // Buffer#write) will replace incomplete surrogates with the unicode
23239 // replacement character. See https://codereview.chromium.org/121173009/ .
23240 StringDecoder.prototype.write = function(buffer) {
23241 var charStr = '';
23242 // if our last write ended with an incomplete multibyte character
23243 while (this.charLength) {
23244 // determine how many remaining bytes this buffer has to offer for this char
23245 var available = (buffer.length >= this.charLength - this.charReceived) ?
23246 this.charLength - this.charReceived :
23247 buffer.length;
23248
23249 // add the new bytes to the char buffer
23250 buffer.copy(this.charBuffer, this.charReceived, 0, available);
23251 this.charReceived += available;
23252
23253 if (this.charReceived < this.charLength) {
23254 // still not enough chars in this buffer? wait for more ...
23255 return '';
23256 }
23257
23258 // remove bytes belonging to the current character from the buffer
23259 buffer = buffer.slice(available, buffer.length);
23260
23261 // get the character that was split
23262 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
23263
23264 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
23265 var charCode = charStr.charCodeAt(charStr.length - 1);
23266 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
23267 this.charLength += this.surrogateSize;
23268 charStr = '';
23269 continue;
23270 }
23271 this.charReceived = this.charLength = 0;
23272
23273 // if there are no more bytes in this buffer, just emit our char
23274 if (buffer.length === 0) {
23275 return charStr;
23276 }
23277 break;
23278 }
23279
23280 // determine and set charLength / charReceived
23281 this.detectIncompleteChar(buffer);
23282
23283 var end = buffer.length;
23284 if (this.charLength) {
23285 // buffer the incomplete character bytes we got
23286 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
23287 end -= this.charReceived;
23288 }
23289
23290 charStr += buffer.toString(this.encoding, 0, end);
23291
23292 var end = charStr.length - 1;
23293 var charCode = charStr.charCodeAt(end);
23294 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
23295 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
23296 var size = this.surrogateSize;
23297 this.charLength += size;
23298 this.charReceived += size;
23299 this.charBuffer.copy(this.charBuffer, size, 0, size);
23300 buffer.copy(this.charBuffer, 0, 0, size);
23301 return charStr.substring(0, end);
23302 }
23303
23304 // or just emit the charStr
23305 return charStr;
23306 };
23307
23308 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
23309 // the end of the given buffer. If so, it sets this.charLength to the byte
23310 // length that character, and sets this.charReceived to the number of bytes
23311 // that are available for this character.
23312 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
23313 // determine how many bytes we have to check at the end of this buffer
23314 var i = (buffer.length >= 3) ? 3 : buffer.length;
23315
23316 // Figure out if one of the last i bytes of our buffer announces an
23317 // incomplete char.
23318 for (; i > 0; i--) {
23319 var c = buffer[buffer.length - i];
23320
23321 // See http://en.wikipedia.org/wiki/UTF-8#Description
23322
23323 // 110XXXXX
23324 if (i == 1 && c >> 5 == 0x06) {
23325 this.charLength = 2;
23326 break;
23327 }
23328
23329 // 1110XXXX
23330 if (i <= 2 && c >> 4 == 0x0E) {
23331 this.charLength = 3;
23332 break;
23333 }
23334
23335 // 11110XXX
23336 if (i <= 3 && c >> 3 == 0x1E) {
23337 this.charLength = 4;
23338 break;
23339 }
23340 }
23341 this.charReceived = i;
23342 };
23343
23344 StringDecoder.prototype.end = function(buffer) {
23345 var res = '';
23346 if (buffer && buffer.length)
23347 res = this.write(buffer);
23348
23349 if (this.charReceived) {
23350 var cr = this.charReceived;
23351 var buf = this.charBuffer;
23352 var enc = this.encoding;
23353 res += buf.slice(0, cr).toString(enc);
23354 }
23355
23356 return res;
23357 };
23358
23359 function passThroughWrite(buffer) {
23360 return buffer.toString(this.encoding);
23361 }
23362
23363 function utf16DetectIncompleteChar(buffer) {
23364 this.charReceived = buffer.length % 2;
23365 this.charLength = this.charReceived ? 2 : 0;
23366 }
23367
23368 function base64DetectIncompleteChar(buffer) {
23369 this.charReceived = buffer.length % 3;
23370 this.charLength = this.charReceived ? 3 : 0;
23371 }
23372
23373 },{"buffer":5}],27:[function(require,module,exports){
23374 (function (global){
23375
23376 /**
23377 * Module exports.
23378 */
23379
23380 module.exports = deprecate;
23381
23382 /**
23383 * Mark that a method should not be used.
23384 * Returns a modified function which warns once by default.
23385 *
23386 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
23387 *
23388 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
23389 * will throw an Error when invoked.
23390 *
23391 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
23392 * will invoke `console.trace()` instead of `console.error()`.
23393 *
23394 * @param {Function} fn - the function to deprecate
23395 * @param {String} msg - the string to print to the console when `fn` is invoked
23396 * @returns {Function} a new "deprecated" version of `fn`
23397 * @api public
23398 */
23399
23400 function deprecate (fn, msg) {
23401 if (config('noDeprecation')) {
23402 return fn;
23403 }
23404
23405 var warned = false;
23406 function deprecated() {
23407 if (!warned) {
23408 if (config('throwDeprecation')) {
23409 throw new Error(msg);
23410 } else if (config('traceDeprecation')) {
23411 console.trace(msg);
23412 } else {
23413 console.warn(msg);
23414 }
23415 warned = true;
23416 }
23417 return fn.apply(this, arguments);
23418 }
23419
23420 return deprecated;
23421 }
23422
23423 /**
23424 * Checks `localStorage` for boolean values for the given `name`.
23425 *
23426 * @param {String} name
23427 * @returns {Boolean}
23428 * @api private
23429 */
23430
23431 function config (name) {
23432 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
23433 try {
23434 if (!global.localStorage) return false;
23435 } catch (_) {
23436 return false;
23437 }
23438 var val = global.localStorage[name];
23439 if (null == val) return false;
23440 return String(val).toLowerCase() === 'true';
23441 }
23442
23443 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23444 },{}],28:[function(require,module,exports){
23445 arguments[4][9][0].apply(exports,arguments)
23446 },{"dup":9}],29:[function(require,module,exports){
23447 module.exports = function isBuffer(arg) {
23448 return arg && typeof arg === 'object'
23449 && typeof arg.copy === 'function'
23450 && typeof arg.fill === 'function'
23451 && typeof arg.readUInt8 === 'function';
23452 }
23453 },{}],30:[function(require,module,exports){
23454 (function (process,global){
23455 // Copyright Joyent, Inc. and other Node contributors.
23456 //
23457 // Permission is hereby granted, free of charge, to any person obtaining a
23458 // copy of this software and associated documentation files (the
23459 // "Software"), to deal in the Software without restriction, including
23460 // without limitation the rights to use, copy, modify, merge, publish,
23461 // distribute, sublicense, and/or sell copies of the Software, and to permit
23462 // persons to whom the Software is furnished to do so, subject to the
23463 // following conditions:
23464 //
23465 // The above copyright notice and this permission notice shall be included
23466 // in all copies or substantial portions of the Software.
23467 //
23468 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23469 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23470 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23471 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23472 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23473 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23474 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23475
23476 var formatRegExp = /%[sdj%]/g;
23477 exports.format = function(f) {
23478 if (!isString(f)) {
23479 var objects = [];
23480 for (var i = 0; i < arguments.length; i++) {
23481 objects.push(inspect(arguments[i]));
23482 }
23483 return objects.join(' ');
23484 }
23485
23486 var i = 1;
23487 var args = arguments;
23488 var len = args.length;
23489 var str = String(f).replace(formatRegExp, function(x) {
23490 if (x === '%%') return '%';
23491 if (i >= len) return x;
23492 switch (x) {
23493 case '%s': return String(args[i++]);
23494 case '%d': return Number(args[i++]);
23495 case '%j':
23496 try {
23497 return JSON.stringify(args[i++]);
23498 } catch (_) {
23499 return '[Circular]';
23500 }
23501 default:
23502 return x;
23503 }
23504 });
23505 for (var x = args[i]; i < len; x = args[++i]) {
23506 if (isNull(x) || !isObject(x)) {
23507 str += ' ' + x;
23508 } else {
23509 str += ' ' + inspect(x);
23510 }
23511 }
23512 return str;
23513 };
23514
23515
23516 // Mark that a method should not be used.
23517 // Returns a modified function which warns once by default.
23518 // If --no-deprecation is set, then it is a no-op.
23519 exports.deprecate = function(fn, msg) {
23520 // Allow for deprecating things in the process of starting up.
23521 if (isUndefined(global.process)) {
23522 return function() {
23523 return exports.deprecate(fn, msg).apply(this, arguments);
23524 };
23525 }
23526
23527 if (process.noDeprecation === true) {
23528 return fn;
23529 }
23530
23531 var warned = false;
23532 function deprecated() {
23533 if (!warned) {
23534 if (process.throwDeprecation) {
23535 throw new Error(msg);
23536 } else if (process.traceDeprecation) {
23537 console.trace(msg);
23538 } else {
23539 console.error(msg);
23540 }
23541 warned = true;
23542 }
23543 return fn.apply(this, arguments);
23544 }
23545
23546 return deprecated;
23547 };
23548
23549
23550 var debugs = {};
23551 var debugEnviron;
23552 exports.debuglog = function(set) {
23553 if (isUndefined(debugEnviron))
23554 debugEnviron = process.env.NODE_DEBUG || '';
23555 set = set.toUpperCase();
23556 if (!debugs[set]) {
23557 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
23558 var pid = process.pid;
23559 debugs[set] = function() {
23560 var msg = exports.format.apply(exports, arguments);
23561 console.error('%s %d: %s', set, pid, msg);
23562 };
23563 } else {
23564 debugs[set] = function() {};
23565 }
23566 }
23567 return debugs[set];
23568 };
23569
23570
23571 /**
23572 * Echos the value of a value. Trys to print the value out
23573 * in the best way possible given the different types.
23574 *
23575 * @param {Object} obj The object to print out.
23576 * @param {Object} opts Optional options object that alters the output.
23577 */
23578 /* legacy: obj, showHidden, depth, colors*/
23579 function inspect(obj, opts) {
23580 // default options
23581 var ctx = {
23582 seen: [],
23583 stylize: stylizeNoColor
23584 };
23585 // legacy...
23586 if (arguments.length >= 3) ctx.depth = arguments[2];
23587 if (arguments.length >= 4) ctx.colors = arguments[3];
23588 if (isBoolean(opts)) {
23589 // legacy...
23590 ctx.showHidden = opts;
23591 } else if (opts) {
23592 // got an "options" object
23593 exports._extend(ctx, opts);
23594 }
23595 // set default options
23596 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
23597 if (isUndefined(ctx.depth)) ctx.depth = 2;
23598 if (isUndefined(ctx.colors)) ctx.colors = false;
23599 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
23600 if (ctx.colors) ctx.stylize = stylizeWithColor;
23601 return formatValue(ctx, obj, ctx.depth);
23602 }
23603 exports.inspect = inspect;
23604
23605
23606 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
23607 inspect.colors = {
23608 'bold' : [1, 22],
23609 'italic' : [3, 23],
23610 'underline' : [4, 24],
23611 'inverse' : [7, 27],
23612 'white' : [37, 39],
23613 'grey' : [90, 39],
23614 'black' : [30, 39],
23615 'blue' : [34, 39],
23616 'cyan' : [36, 39],
23617 'green' : [32, 39],
23618 'magenta' : [35, 39],
23619 'red' : [31, 39],
23620 'yellow' : [33, 39]
23621 };
23622
23623 // Don't use 'blue' not visible on cmd.exe
23624 inspect.styles = {
23625 'special': 'cyan',
23626 'number': 'yellow',
23627 'boolean': 'yellow',
23628 'undefined': 'grey',
23629 'null': 'bold',
23630 'string': 'green',
23631 'date': 'magenta',
23632 // "name": intentionally not styling
23633 'regexp': 'red'
23634 };
23635
23636
23637 function stylizeWithColor(str, styleType) {
23638 var style = inspect.styles[styleType];
23639
23640 if (style) {
23641 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
23642 '\u001b[' + inspect.colors[style][1] + 'm';
23643 } else {
23644 return str;
23645 }
23646 }
23647
23648
23649 function stylizeNoColor(str, styleType) {
23650 return str;
23651 }
23652
23653
23654 function arrayToHash(array) {
23655 var hash = {};
23656
23657 array.forEach(function(val, idx) {
23658 hash[val] = true;
23659 });
23660
23661 return hash;
23662 }
23663
23664
23665 function formatValue(ctx, value, recurseTimes) {
23666 // Provide a hook for user-specified inspect functions.
23667 // Check that value is an object with an inspect function on it
23668 if (ctx.customInspect &&
23669 value &&
23670 isFunction(value.inspect) &&
23671 // Filter out the util module, it's inspect function is special
23672 value.inspect !== exports.inspect &&
23673 // Also filter out any prototype objects using the circular check.
23674 !(value.constructor && value.constructor.prototype === value)) {
23675 var ret = value.inspect(recurseTimes, ctx);
23676 if (!isString(ret)) {
23677 ret = formatValue(ctx, ret, recurseTimes);
23678 }
23679 return ret;
23680 }
23681
23682 // Primitive types cannot have properties
23683 var primitive = formatPrimitive(ctx, value);
23684 if (primitive) {
23685 return primitive;
23686 }
23687
23688 // Look up the keys of the object.
23689 var keys = Object.keys(value);
23690 var visibleKeys = arrayToHash(keys);
23691
23692 if (ctx.showHidden) {
23693 keys = Object.getOwnPropertyNames(value);
23694 }
23695
23696 // IE doesn't make error fields non-enumerable
23697 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
23698 if (isError(value)
23699 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
23700 return formatError(value);
23701 }
23702
23703 // Some type of object without properties can be shortcutted.
23704 if (keys.length === 0) {
23705 if (isFunction(value)) {
23706 var name = value.name ? ': ' + value.name : '';
23707 return ctx.stylize('[Function' + name + ']', 'special');
23708 }
23709 if (isRegExp(value)) {
23710 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
23711 }
23712 if (isDate(value)) {
23713 return ctx.stylize(Date.prototype.toString.call(value), 'date');
23714 }
23715 if (isError(value)) {
23716 return formatError(value);
23717 }
23718 }
23719
23720 var base = '', array = false, braces = ['{', '}'];
23721
23722 // Make Array say that they are Array
23723 if (isArray(value)) {
23724 array = true;
23725 braces = ['[', ']'];
23726 }
23727
23728 // Make functions say that they are functions
23729 if (isFunction(value)) {
23730 var n = value.name ? ': ' + value.name : '';
23731 base = ' [Function' + n + ']';
23732 }
23733
23734 // Make RegExps say that they are RegExps
23735 if (isRegExp(value)) {
23736 base = ' ' + RegExp.prototype.toString.call(value);
23737 }
23738
23739 // Make dates with properties first say the date
23740 if (isDate(value)) {
23741 base = ' ' + Date.prototype.toUTCString.call(value);
23742 }
23743
23744 // Make error with message first say the error
23745 if (isError(value)) {
23746 base = ' ' + formatError(value);
23747 }
23748
23749 if (keys.length === 0 && (!array || value.length == 0)) {
23750 return braces[0] + base + braces[1];
23751 }
23752
23753 if (recurseTimes < 0) {
23754 if (isRegExp(value)) {
23755 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
23756 } else {
23757 return ctx.stylize('[Object]', 'special');
23758 }
23759 }
23760
23761 ctx.seen.push(value);
23762
23763 var output;
23764 if (array) {
23765 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
23766 } else {
23767 output = keys.map(function(key) {
23768 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
23769 });
23770 }
23771
23772 ctx.seen.pop();
23773
23774 return reduceToSingleString(output, base, braces);
23775 }
23776
23777
23778 function formatPrimitive(ctx, value) {
23779 if (isUndefined(value))
23780 return ctx.stylize('undefined', 'undefined');
23781 if (isString(value)) {
23782 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
23783 .replace(/'/g, "\\'")
23784 .replace(/\\"/g, '"') + '\'';
23785 return ctx.stylize(simple, 'string');
23786 }
23787 if (isNumber(value))
23788 return ctx.stylize('' + value, 'number');
23789 if (isBoolean(value))
23790 return ctx.stylize('' + value, 'boolean');
23791 // For some reason typeof null is "object", so special case here.
23792 if (isNull(value))
23793 return ctx.stylize('null', 'null');
23794 }
23795
23796
23797 function formatError(value) {
23798 return '[' + Error.prototype.toString.call(value) + ']';
23799 }
23800
23801
23802 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
23803 var output = [];
23804 for (var i = 0, l = value.length; i < l; ++i) {
23805 if (hasOwnProperty(value, String(i))) {
23806 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
23807 String(i), true));
23808 } else {
23809 output.push('');
23810 }
23811 }
23812 keys.forEach(function(key) {
23813 if (!key.match(/^\d+$/)) {
23814 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
23815 key, true));
23816 }
23817 });
23818 return output;
23819 }
23820
23821
23822 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
23823 var name, str, desc;
23824 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
23825 if (desc.get) {
23826 if (desc.set) {
23827 str = ctx.stylize('[Getter/Setter]', 'special');
23828 } else {
23829 str = ctx.stylize('[Getter]', 'special');
23830 }
23831 } else {
23832 if (desc.set) {
23833 str = ctx.stylize('[Setter]', 'special');
23834 }
23835 }
23836 if (!hasOwnProperty(visibleKeys, key)) {
23837 name = '[' + key + ']';
23838 }
23839 if (!str) {
23840 if (ctx.seen.indexOf(desc.value) < 0) {
23841 if (isNull(recurseTimes)) {
23842 str = formatValue(ctx, desc.value, null);
23843 } else {
23844 str = formatValue(ctx, desc.value, recurseTimes - 1);
23845 }
23846 if (str.indexOf('\n') > -1) {
23847 if (array) {
23848 str = str.split('\n').map(function(line) {
23849 return ' ' + line;
23850 }).join('\n').substr(2);
23851 } else {
23852 str = '\n' + str.split('\n').map(function(line) {
23853 return ' ' + line;
23854 }).join('\n');
23855 }
23856 }
23857 } else {
23858 str = ctx.stylize('[Circular]', 'special');
23859 }
23860 }
23861 if (isUndefined(name)) {
23862 if (array && key.match(/^\d+$/)) {
23863 return str;
23864 }
23865 name = JSON.stringify('' + key);
23866 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
23867 name = name.substr(1, name.length - 2);
23868 name = ctx.stylize(name, 'name');
23869 } else {
23870 name = name.replace(/'/g, "\\'")
23871 .replace(/\\"/g, '"')
23872 .replace(/(^"|"$)/g, "'");
23873 name = ctx.stylize(name, 'string');
23874 }
23875 }
23876
23877 return name + ': ' + str;
23878 }
23879
23880
23881 function reduceToSingleString(output, base, braces) {
23882 var numLinesEst = 0;
23883 var length = output.reduce(function(prev, cur) {
23884 numLinesEst++;
23885 if (cur.indexOf('\n') >= 0) numLinesEst++;
23886 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
23887 }, 0);
23888
23889 if (length > 60) {
23890 return braces[0] +
23891 (base === '' ? '' : base + '\n ') +
23892 ' ' +
23893 output.join(',\n ') +
23894 ' ' +
23895 braces[1];
23896 }
23897
23898 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
23899 }
23900
23901
23902 // NOTE: These type checking functions intentionally don't use `instanceof`
23903 // because it is fragile and can be easily faked with `Object.create()`.
23904 function isArray(ar) {
23905 return Array.isArray(ar);
23906 }
23907 exports.isArray = isArray;
23908
23909 function isBoolean(arg) {
23910 return typeof arg === 'boolean';
23911 }
23912 exports.isBoolean = isBoolean;
23913
23914 function isNull(arg) {
23915 return arg === null;
23916 }
23917 exports.isNull = isNull;
23918
23919 function isNullOrUndefined(arg) {
23920 return arg == null;
23921 }
23922 exports.isNullOrUndefined = isNullOrUndefined;
23923
23924 function isNumber(arg) {
23925 return typeof arg === 'number';
23926 }
23927 exports.isNumber = isNumber;
23928
23929 function isString(arg) {
23930 return typeof arg === 'string';
23931 }
23932 exports.isString = isString;
23933
23934 function isSymbol(arg) {
23935 return typeof arg === 'symbol';
23936 }
23937 exports.isSymbol = isSymbol;
23938
23939 function isUndefined(arg) {
23940 return arg === void 0;
23941 }
23942 exports.isUndefined = isUndefined;
23943
23944 function isRegExp(re) {
23945 return isObject(re) && objectToString(re) === '[object RegExp]';
23946 }
23947 exports.isRegExp = isRegExp;
23948
23949 function isObject(arg) {
23950 return typeof arg === 'object' && arg !== null;
23951 }
23952 exports.isObject = isObject;
23953
23954 function isDate(d) {
23955 return isObject(d) && objectToString(d) === '[object Date]';
23956 }
23957 exports.isDate = isDate;
23958
23959 function isError(e) {
23960 return isObject(e) &&
23961 (objectToString(e) === '[object Error]' || e instanceof Error);
23962 }
23963 exports.isError = isError;
23964
23965 function isFunction(arg) {
23966 return typeof arg === 'function';
23967 }
23968 exports.isFunction = isFunction;
23969
23970 function isPrimitive(arg) {
23971 return arg === null ||
23972 typeof arg === 'boolean' ||
23973 typeof arg === 'number' ||
23974 typeof arg === 'string' ||
23975 typeof arg === 'symbol' || // ES6 symbol
23976 typeof arg === 'undefined';
23977 }
23978 exports.isPrimitive = isPrimitive;
23979
23980 exports.isBuffer = require('./support/isBuffer');
23981
23982 function objectToString(o) {
23983 return Object.prototype.toString.call(o);
23984 }
23985
23986
23987 function pad(n) {
23988 return n < 10 ? '0' + n.toString(10) : n.toString(10);
23989 }
23990
23991
23992 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
23993 'Oct', 'Nov', 'Dec'];
23994
23995 // 26 Feb 16:19:34
23996 function timestamp() {
23997 var d = new Date();
23998 var time = [pad(d.getHours()),
23999 pad(d.getMinutes()),
24000 pad(d.getSeconds())].join(':');
24001 return [d.getDate(), months[d.getMonth()], time].join(' ');
24002 }
24003
24004
24005 // log is just a thin wrapper to console.log that prepends a timestamp
24006 exports.log = function() {
24007 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
24008 };
24009
24010
24011 /**
24012 * Inherit the prototype methods from one constructor into another.
24013 *
24014 * The Function.prototype.inherits from lang.js rewritten as a standalone
24015 * function (not on Function.prototype). NOTE: If this file is to be loaded
24016 * during bootstrapping this function needs to be rewritten using some native
24017 * functions as prototype setup using normal JavaScript does not work as
24018 * expected during bootstrapping (see mirror.js in r114903).
24019 *
24020 * @param {function} ctor Constructor function which needs to inherit the
24021 * prototype.
24022 * @param {function} superCtor Constructor function to inherit prototype from.
24023 */
24024 exports.inherits = require('inherits');
24025
24026 exports._extend = function(origin, add) {
24027 // Don't do anything if add isn't an object
24028 if (!add || !isObject(add)) return origin;
24029
24030 var keys = Object.keys(add);
24031 var i = keys.length;
24032 while (i--) {
24033 origin[keys[i]] = add[keys[i]];
24034 }
24035 return origin;
24036 };
24037
24038 function hasOwnProperty(obj, prop) {
24039 return Object.prototype.hasOwnProperty.call(obj, prop);
24040 }
24041
24042 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
24043 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
24044 (function (Buffer){
24045 const createKeccakHash = require('keccak')
24046 const secp256k1 = require('secp256k1')
24047 const assert = require('assert')
24048 const rlp = require('rlp')
24049 const BN = require('bn.js')
24050 const createHash = require('create-hash')
24051 Object.assign(exports, require('ethjs-util'))
24052
24053 /**
24054 * the max integer that this VM can handle (a ```BN```)
24055 * @var {BN} MAX_INTEGER
24056 */
24057 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
24058
24059 /**
24060 * 2^256 (a ```BN```)
24061 * @var {BN} TWO_POW256
24062 */
24063 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
24064
24065 /**
24066 * SHA3-256 hash of null (a ```String```)
24067 * @var {String} SHA3_NULL_S
24068 */
24069 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
24070
24071 /**
24072 * SHA3-256 hash of null (a ```Buffer```)
24073 * @var {Buffer} SHA3_NULL
24074 */
24075 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
24076
24077 /**
24078 * SHA3-256 of an RLP of an empty array (a ```String```)
24079 * @var {String} SHA3_RLP_ARRAY_S
24080 */
24081 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
24082
24083 /**
24084 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
24085 * @var {Buffer} SHA3_RLP_ARRAY
24086 */
24087 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
24088
24089 /**
24090 * SHA3-256 hash of the RLP of null (a ```String```)
24091 * @var {String} SHA3_RLP_S
24092 */
24093 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
24094
24095 /**
24096 * SHA3-256 hash of the RLP of null (a ```Buffer```)
24097 * @var {Buffer} SHA3_RLP
24098 */
24099 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
24100
24101 /**
24102 * [`BN`](https://github.com/indutny/bn.js)
24103 * @var {Function}
24104 */
24105 exports.BN = BN
24106
24107 /**
24108 * [`rlp`](https://github.com/ethereumjs/rlp)
24109 * @var {Function}
24110 */
24111 exports.rlp = rlp
24112
24113 /**
24114 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
24115 * @var {Object}
24116 */
24117 exports.secp256k1 = secp256k1
24118
24119 /**
24120 * Returns a buffer filled with 0s
24121 * @method zeros
24122 * @param {Number} bytes the number of bytes the buffer should be
24123 * @return {Buffer}
24124 */
24125 exports.zeros = function (bytes) {
24126 return Buffer.allocUnsafe(bytes).fill(0)
24127 }
24128
24129 /**
24130 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
24131 * Or it truncates the beginning if it exceeds.
24132 * @method lsetLength
24133 * @param {Buffer|Array} msg the value to pad
24134 * @param {Number} length the number of bytes the output should be
24135 * @param {Boolean} [right=false] whether to start padding form the left or right
24136 * @return {Buffer|Array}
24137 */
24138 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
24139 var buf = exports.zeros(length)
24140 msg = exports.toBuffer(msg)
24141 if (right) {
24142 if (msg.length < length) {
24143 msg.copy(buf)
24144 return buf
24145 }
24146 return msg.slice(0, length)
24147 } else {
24148 if (msg.length < length) {
24149 msg.copy(buf, length - msg.length)
24150 return buf
24151 }
24152 return msg.slice(-length)
24153 }
24154 }
24155
24156 /**
24157 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
24158 * Or it truncates the beginning if it exceeds.
24159 * @param {Buffer|Array} msg the value to pad
24160 * @param {Number} length the number of bytes the output should be
24161 * @return {Buffer|Array}
24162 */
24163 exports.setLengthRight = function (msg, length) {
24164 return exports.setLength(msg, length, true)
24165 }
24166
24167 /**
24168 * Trims leading zeros from a `Buffer` or an `Array`
24169 * @param {Buffer|Array|String} a
24170 * @return {Buffer|Array|String}
24171 */
24172 exports.unpad = exports.stripZeros = function (a) {
24173 a = exports.stripHexPrefix(a)
24174 var first = a[0]
24175 while (a.length > 0 && first.toString() === '0') {
24176 a = a.slice(1)
24177 first = a[0]
24178 }
24179 return a
24180 }
24181 /**
24182 * 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.
24183 * @param {*} v the value
24184 */
24185 exports.toBuffer = function (v) {
24186 if (!Buffer.isBuffer(v)) {
24187 if (Array.isArray(v)) {
24188 v = Buffer.from(v)
24189 } else if (typeof v === 'string') {
24190 if (exports.isHexPrefixed(v)) {
24191 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
24192 } else {
24193 v = Buffer.from(v)
24194 }
24195 } else if (typeof v === 'number') {
24196 v = exports.intToBuffer(v)
24197 } else if (v === null || v === undefined) {
24198 v = Buffer.allocUnsafe(0)
24199 } else if (v.toArray) {
24200 // converts a BN to a Buffer
24201 v = Buffer.from(v.toArray())
24202 } else {
24203 throw new Error('invalid type')
24204 }
24205 }
24206 return v
24207 }
24208
24209 /**
24210 * Converts a `Buffer` to a `Number`
24211 * @param {Buffer} buf
24212 * @return {Number}
24213 * @throws If the input number exceeds 53 bits.
24214 */
24215 exports.bufferToInt = function (buf) {
24216 return new BN(exports.toBuffer(buf)).toNumber()
24217 }
24218
24219 /**
24220 * Converts a `Buffer` into a hex `String`
24221 * @param {Buffer} buf
24222 * @return {String}
24223 */
24224 exports.bufferToHex = function (buf) {
24225 buf = exports.toBuffer(buf)
24226 return '0x' + buf.toString('hex')
24227 }
24228
24229 /**
24230 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
24231 * @param {Buffer} num
24232 * @return {BN}
24233 */
24234 exports.fromSigned = function (num) {
24235 return new BN(num).fromTwos(256)
24236 }
24237
24238 /**
24239 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
24240 * @param {BN} num
24241 * @return {Buffer}
24242 */
24243 exports.toUnsigned = function (num) {
24244 return Buffer.from(num.toTwos(256).toArray())
24245 }
24246
24247 /**
24248 * Creates SHA-3 hash of the input
24249 * @param {Buffer|Array|String|Number} a the input data
24250 * @param {Number} [bits=256] the SHA width
24251 * @return {Buffer}
24252 */
24253 exports.sha3 = function (a, bits) {
24254 a = exports.toBuffer(a)
24255 if (!bits) bits = 256
24256
24257 return createKeccakHash('keccak' + bits).update(a).digest()
24258 }
24259
24260 /**
24261 * Creates SHA256 hash of the input
24262 * @param {Buffer|Array|String|Number} a the input data
24263 * @return {Buffer}
24264 */
24265 exports.sha256 = function (a) {
24266 a = exports.toBuffer(a)
24267 return createHash('sha256').update(a).digest()
24268 }
24269
24270 /**
24271 * Creates RIPEMD160 hash of the input
24272 * @param {Buffer|Array|String|Number} a the input data
24273 * @param {Boolean} padded whether it should be padded to 256 bits or not
24274 * @return {Buffer}
24275 */
24276 exports.ripemd160 = function (a, padded) {
24277 a = exports.toBuffer(a)
24278 var hash = createHash('rmd160').update(a).digest()
24279 if (padded === true) {
24280 return exports.setLength(hash, 32)
24281 } else {
24282 return hash
24283 }
24284 }
24285
24286 /**
24287 * Creates SHA-3 hash of the RLP encoded version of the input
24288 * @param {Buffer|Array|String|Number} a the input data
24289 * @return {Buffer}
24290 */
24291 exports.rlphash = function (a) {
24292 return exports.sha3(rlp.encode(a))
24293 }
24294
24295 /**
24296 * Checks if the private key satisfies the rules of the curve secp256k1.
24297 * @param {Buffer} privateKey
24298 * @return {Boolean}
24299 */
24300 exports.isValidPrivate = function (privateKey) {
24301 return secp256k1.privateKeyVerify(privateKey)
24302 }
24303
24304 /**
24305 * Checks if the public key satisfies the rules of the curve secp256k1
24306 * and the requirements of Ethereum.
24307 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
24308 * @param {Boolean} [sanitize=false] Accept public keys in other formats
24309 * @return {Boolean}
24310 */
24311 exports.isValidPublic = function (publicKey, sanitize) {
24312 if (publicKey.length === 64) {
24313 // Convert to SEC1 for secp256k1
24314 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
24315 }
24316
24317 if (!sanitize) {
24318 return false
24319 }
24320
24321 return secp256k1.publicKeyVerify(publicKey)
24322 }
24323
24324 /**
24325 * Returns the ethereum address of a given public key.
24326 * Accepts "Ethereum public keys" and SEC1 encoded keys.
24327 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
24328 * @param {Boolean} [sanitize=false] Accept public keys in other formats
24329 * @return {Buffer}
24330 */
24331 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
24332 pubKey = exports.toBuffer(pubKey)
24333 if (sanitize && (pubKey.length !== 64)) {
24334 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
24335 }
24336 assert(pubKey.length === 64)
24337 // Only take the lower 160bits of the hash
24338 return exports.sha3(pubKey).slice(-20)
24339 }
24340
24341 /**
24342 * Returns the ethereum public key of a given private key
24343 * @param {Buffer} privateKey A private key must be 256 bits wide
24344 * @return {Buffer}
24345 */
24346 var privateToPublic = exports.privateToPublic = function (privateKey) {
24347 privateKey = exports.toBuffer(privateKey)
24348 // skip the type flag and use the X, Y points
24349 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
24350 }
24351
24352 /**
24353 * Converts a public key to the Ethereum format.
24354 * @param {Buffer} publicKey
24355 * @return {Buffer}
24356 */
24357 exports.importPublic = function (publicKey) {
24358 publicKey = exports.toBuffer(publicKey)
24359 if (publicKey.length !== 64) {
24360 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
24361 }
24362 return publicKey
24363 }
24364
24365 /**
24366 * ECDSA sign
24367 * @param {Buffer} msgHash
24368 * @param {Buffer} privateKey
24369 * @return {Object}
24370 */
24371 exports.ecsign = function (msgHash, privateKey) {
24372 var sig = secp256k1.sign(msgHash, privateKey)
24373
24374 var ret = {}
24375 ret.r = sig.signature.slice(0, 32)
24376 ret.s = sig.signature.slice(32, 64)
24377 ret.v = sig.recovery + 27
24378 return ret
24379 }
24380
24381 /**
24382 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
24383 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
24384 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
24385 * used to produce the signature.
24386 * @param message
24387 * @returns {Buffer} hash
24388 */
24389 exports.hashPersonalMessage = function (message) {
24390 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
24391 return exports.sha3(Buffer.concat([prefix, message]))
24392 }
24393
24394 /**
24395 * ECDSA public key recovery from signature
24396 * @param {Buffer} msgHash
24397 * @param {Number} v
24398 * @param {Buffer} r
24399 * @param {Buffer} s
24400 * @return {Buffer} publicKey
24401 */
24402 exports.ecrecover = function (msgHash, v, r, s) {
24403 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
24404 var recovery = v - 27
24405 if (recovery !== 0 && recovery !== 1) {
24406 throw new Error('Invalid signature v value')
24407 }
24408 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
24409 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
24410 }
24411
24412 /**
24413 * Convert signature parameters into the format of `eth_sign` RPC method
24414 * @param {Number} v
24415 * @param {Buffer} r
24416 * @param {Buffer} s
24417 * @return {String} sig
24418 */
24419 exports.toRpcSig = function (v, r, s) {
24420 // NOTE: with potential introduction of chainId this might need to be updated
24421 if (v !== 27 && v !== 28) {
24422 throw new Error('Invalid recovery id')
24423 }
24424
24425 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
24426 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
24427 return exports.bufferToHex(Buffer.concat([
24428 exports.setLengthLeft(r, 32),
24429 exports.setLengthLeft(s, 32),
24430 exports.toBuffer(v - 27)
24431 ]))
24432 }
24433
24434 /**
24435 * Convert signature format of the `eth_sign` RPC method to signature parameters
24436 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
24437 * @param {String} sig
24438 * @return {Object}
24439 */
24440 exports.fromRpcSig = function (sig) {
24441 sig = exports.toBuffer(sig)
24442
24443 // NOTE: with potential introduction of chainId this might need to be updated
24444 if (sig.length !== 65) {
24445 throw new Error('Invalid signature length')
24446 }
24447
24448 var v = sig[64]
24449 // support both versions of `eth_sign` responses
24450 if (v < 27) {
24451 v += 27
24452 }
24453
24454 return {
24455 v: v,
24456 r: sig.slice(0, 32),
24457 s: sig.slice(32, 64)
24458 }
24459 }
24460
24461 /**
24462 * Returns the ethereum address of a given private key
24463 * @param {Buffer} privateKey A private key must be 256 bits wide
24464 * @return {Buffer}
24465 */
24466 exports.privateToAddress = function (privateKey) {
24467 return exports.publicToAddress(privateToPublic(privateKey))
24468 }
24469
24470 /**
24471 * Checks if the address is a valid. Accepts checksummed addresses too
24472 * @param {String} address
24473 * @return {Boolean}
24474 */
24475 exports.isValidAddress = function (address) {
24476 return /^0x[0-9a-fA-F]{40}$/i.test(address)
24477 }
24478
24479 /**
24480 * Returns a checksummed address
24481 * @param {String} address
24482 * @return {String}
24483 */
24484 exports.toChecksumAddress = function (address) {
24485 address = exports.stripHexPrefix(address).toLowerCase()
24486 var hash = exports.sha3(address).toString('hex')
24487 var ret = '0x'
24488
24489 for (var i = 0; i < address.length; i++) {
24490 if (parseInt(hash[i], 16) >= 8) {
24491 ret += address[i].toUpperCase()
24492 } else {
24493 ret += address[i]
24494 }
24495 }
24496
24497 return ret
24498 }
24499
24500 /**
24501 * Checks if the address is a valid checksummed address
24502 * @param {Buffer} address
24503 * @return {Boolean}
24504 */
24505 exports.isValidChecksumAddress = function (address) {
24506 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
24507 }
24508
24509 /**
24510 * Generates an address of a newly created contract
24511 * @param {Buffer} from the address which is creating this new address
24512 * @param {Buffer} nonce the nonce of the from account
24513 * @return {Buffer}
24514 */
24515 exports.generateAddress = function (from, nonce) {
24516 from = exports.toBuffer(from)
24517 nonce = new BN(nonce)
24518
24519 if (nonce.isZero()) {
24520 // in RLP we want to encode null in the case of zero nonce
24521 // read the RLP documentation for an answer if you dare
24522 nonce = null
24523 } else {
24524 nonce = Buffer.from(nonce.toArray())
24525 }
24526
24527 // Only take the lower 160bits of the hash
24528 return exports.rlphash([from, nonce]).slice(-20)
24529 }
24530
24531 /**
24532 * Returns true if the supplied address belongs to a precompiled account
24533 * @param {Buffer|String} address
24534 * @return {Boolean}
24535 */
24536 exports.isPrecompiled = function (address) {
24537 var a = exports.unpad(address)
24538 return a.length === 1 && a[0] > 0 && a[0] < 5
24539 }
24540
24541 /**
24542 * Adds "0x" to a given `String` if it does not already start with "0x"
24543 * @param {String} str
24544 * @return {String}
24545 */
24546 exports.addHexPrefix = function (str) {
24547 if (typeof str !== 'string') {
24548 return str
24549 }
24550
24551 return exports.isHexPrefixed(str) ? str : '0x' + str
24552 }
24553
24554 /**
24555 * Validate ECDSA signature
24556 * @method isValidSignature
24557 * @param {Buffer} v
24558 * @param {Buffer} r
24559 * @param {Buffer} s
24560 * @param {Boolean} [homestead=true]
24561 * @return {Boolean}
24562 */
24563
24564 exports.isValidSignature = function (v, r, s, homestead) {
24565 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
24566 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
24567
24568 if (r.length !== 32 || s.length !== 32) {
24569 return false
24570 }
24571
24572 if (v !== 27 && v !== 28) {
24573 return false
24574 }
24575
24576 r = new BN(r)
24577 s = new BN(s)
24578
24579 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
24580 return false
24581 }
24582
24583 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
24584 return false
24585 }
24586
24587 return true
24588 }
24589
24590 /**
24591 * Converts a `Buffer` or `Array` to JSON
24592 * @param {Buffer|Array} ba
24593 * @return {Array|String|null}
24594 */
24595 exports.baToJSON = function (ba) {
24596 if (Buffer.isBuffer(ba)) {
24597 return '0x' + ba.toString('hex')
24598 } else if (ba instanceof Array) {
24599 var array = []
24600 for (var i = 0; i < ba.length; i++) {
24601 array.push(exports.baToJSON(ba[i]))
24602 }
24603 return array
24604 }
24605 }
24606
24607 /**
24608 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
24609 * @param {Object} self the `Object` to define properties on
24610 * @param {Array} fields an array fields to define. Fields can contain:
24611 * * `name` - the name of the properties
24612 * * `length` - the number of bytes the field can have
24613 * * `allowLess` - if the field can be less than the length
24614 * * `allowEmpty`
24615 * @param {*} data data to be validated against the definitions
24616 */
24617 exports.defineProperties = function (self, fields, data) {
24618 self.raw = []
24619 self._fields = []
24620
24621 // attach the `toJSON`
24622 self.toJSON = function (label) {
24623 if (label) {
24624 var obj = {}
24625 self._fields.forEach(function (field) {
24626 obj[field] = '0x' + self[field].toString('hex')
24627 })
24628 return obj
24629 }
24630 return exports.baToJSON(this.raw)
24631 }
24632
24633 self.serialize = function serialize () {
24634 return rlp.encode(self.raw)
24635 }
24636
24637 fields.forEach(function (field, i) {
24638 self._fields.push(field.name)
24639 function getter () {
24640 return self.raw[i]
24641 }
24642 function setter (v) {
24643 v = exports.toBuffer(v)
24644
24645 if (v.toString('hex') === '00' && !field.allowZero) {
24646 v = Buffer.allocUnsafe(0)
24647 }
24648
24649 if (field.allowLess && field.length) {
24650 v = exports.stripZeros(v)
24651 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
24652 } else if (!(field.allowZero && v.length === 0) && field.length) {
24653 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
24654 }
24655
24656 self.raw[i] = v
24657 }
24658
24659 Object.defineProperty(self, field.name, {
24660 enumerable: true,
24661 configurable: true,
24662 get: getter,
24663 set: setter
24664 })
24665
24666 if (field.default) {
24667 self[field.name] = field.default
24668 }
24669
24670 // attach alias
24671 if (field.alias) {
24672 Object.defineProperty(self, field.alias, {
24673 enumerable: false,
24674 configurable: true,
24675 set: setter,
24676 get: getter
24677 })
24678 }
24679 })
24680
24681 // if the constuctor is passed data
24682 if (data) {
24683 if (typeof data === 'string') {
24684 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
24685 }
24686
24687 if (Buffer.isBuffer(data)) {
24688 data = rlp.decode(data)
24689 }
24690
24691 if (Array.isArray(data)) {
24692 if (data.length > self._fields.length) {
24693 throw (new Error('wrong number of fields in data'))
24694 }
24695
24696 // make sure all the items are buffers
24697 data.forEach(function (d, i) {
24698 self[self._fields[i]] = exports.toBuffer(d)
24699 })
24700 } else if (typeof data === 'object') {
24701 const keys = Object.keys(data)
24702 fields.forEach(function (field) {
24703 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
24704 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
24705 })
24706 } else {
24707 throw new Error('invalid data')
24708 }
24709 }
24710 }
24711
24712 }).call(this,require("buffer").Buffer)
24713 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
24714 (function (Buffer){
24715 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
24716 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
24717 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
24718
24719 function check (buffer) {
24720 if (buffer.length < 8) return false
24721 if (buffer.length > 72) return false
24722 if (buffer[0] !== 0x30) return false
24723 if (buffer[1] !== buffer.length - 2) return false
24724 if (buffer[2] !== 0x02) return false
24725
24726 var lenR = buffer[3]
24727 if (lenR === 0) return false
24728 if (5 + lenR >= buffer.length) return false
24729 if (buffer[4 + lenR] !== 0x02) return false
24730
24731 var lenS = buffer[5 + lenR]
24732 if (lenS === 0) return false
24733 if ((6 + lenR + lenS) !== buffer.length) return false
24734
24735 if (buffer[4] & 0x80) return false
24736 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
24737
24738 if (buffer[lenR + 6] & 0x80) return false
24739 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
24740 return true
24741 }
24742
24743 function decode (buffer) {
24744 if (buffer.length < 8) throw new Error('DER sequence length is too short')
24745 if (buffer.length > 72) throw new Error('DER sequence length is too long')
24746 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
24747 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
24748 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
24749
24750 var lenR = buffer[3]
24751 if (lenR === 0) throw new Error('R length is zero')
24752 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
24753 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
24754
24755 var lenS = buffer[5 + lenR]
24756 if (lenS === 0) throw new Error('S length is zero')
24757 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
24758
24759 if (buffer[4] & 0x80) throw new Error('R value is negative')
24760 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
24761
24762 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
24763 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
24764
24765 // non-BIP66 - extract R, S values
24766 return {
24767 r: buffer.slice(4, 4 + lenR),
24768 s: buffer.slice(6 + lenR)
24769 }
24770 }
24771
24772 /*
24773 * Expects r and s to be positive DER integers.
24774 *
24775 * The DER format uses the most significant bit as a sign bit (& 0x80).
24776 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
24777 *
24778 * Examples:
24779 *
24780 * 0 => 0x00
24781 * 1 => 0x01
24782 * -1 => 0xff
24783 * 127 => 0x7f
24784 * -127 => 0x81
24785 * 128 => 0x0080
24786 * -128 => 0x80
24787 * 255 => 0x00ff
24788 * -255 => 0xff01
24789 * 16300 => 0x3fac
24790 * -16300 => 0xc054
24791 * 62300 => 0x00f35c
24792 * -62300 => 0xff0ca4
24793 */
24794 function encode (r, s) {
24795 var lenR = r.length
24796 var lenS = s.length
24797 if (lenR === 0) throw new Error('R length is zero')
24798 if (lenS === 0) throw new Error('S length is zero')
24799 if (lenR > 33) throw new Error('R length is too long')
24800 if (lenS > 33) throw new Error('S length is too long')
24801 if (r[0] & 0x80) throw new Error('R value is negative')
24802 if (s[0] & 0x80) throw new Error('S value is negative')
24803 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
24804 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
24805
24806 var signature = new Buffer(6 + lenR + lenS)
24807
24808 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
24809 signature[0] = 0x30
24810 signature[1] = signature.length - 2
24811 signature[2] = 0x02
24812 signature[3] = r.length
24813 r.copy(signature, 4)
24814 signature[4 + lenR] = 0x02
24815 signature[5 + lenR] = s.length
24816 s.copy(signature, 6 + lenR)
24817
24818 return signature
24819 }
24820
24821 module.exports = {
24822 check: check,
24823 decode: decode,
24824 encode: encode
24825 }
24826
24827 }).call(this,require("buffer").Buffer)
24828 },{"buffer":5}],33:[function(require,module,exports){
24829 (function (module, exports) {
24830 'use strict';
24831
24832 // Utils
24833 function assert (val, msg) {
24834 if (!val) throw new Error(msg || 'Assertion failed');
24835 }
24836
24837 // Could use `inherits` module, but don't want to move from single file
24838 // architecture yet.
24839 function inherits (ctor, superCtor) {
24840 ctor.super_ = superCtor;
24841 var TempCtor = function () {};
24842 TempCtor.prototype = superCtor.prototype;
24843 ctor.prototype = new TempCtor();
24844 ctor.prototype.constructor = ctor;
24845 }
24846
24847 // BN
24848
24849 function BN (number, base, endian) {
24850 if (BN.isBN(number)) {
24851 return number;
24852 }
24853
24854 this.negative = 0;
24855 this.words = null;
24856 this.length = 0;
24857
24858 // Reduction context
24859 this.red = null;
24860
24861 if (number !== null) {
24862 if (base === 'le' || base === 'be') {
24863 endian = base;
24864 base = 10;
24865 }
24866
24867 this._init(number || 0, base || 10, endian || 'be');
24868 }
24869 }
24870 if (typeof module === 'object') {
24871 module.exports = BN;
24872 } else {
24873 exports.BN = BN;
24874 }
24875
24876 BN.BN = BN;
24877 BN.wordSize = 26;
24878
24879 var Buffer;
24880 try {
24881 Buffer = require('buf' + 'fer').Buffer;
24882 } catch (e) {
24883 }
24884
24885 BN.isBN = function isBN (num) {
24886 if (num instanceof BN) {
24887 return true;
24888 }
24889
24890 return num !== null && typeof num === 'object' &&
24891 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
24892 };
24893
24894 BN.max = function max (left, right) {
24895 if (left.cmp(right) > 0) return left;
24896 return right;
24897 };
24898
24899 BN.min = function min (left, right) {
24900 if (left.cmp(right) < 0) return left;
24901 return right;
24902 };
24903
24904 BN.prototype._init = function init (number, base, endian) {
24905 if (typeof number === 'number') {
24906 return this._initNumber(number, base, endian);
24907 }
24908
24909 if (typeof number === 'object') {
24910 return this._initArray(number, base, endian);
24911 }
24912
24913 if (base === 'hex') {
24914 base = 16;
24915 }
24916 assert(base === (base | 0) && base >= 2 && base <= 36);
24917
24918 number = number.toString().replace(/\s+/g, '');
24919 var start = 0;
24920 if (number[0] === '-') {
24921 start++;
24922 }
24923
24924 if (base === 16) {
24925 this._parseHex(number, start);
24926 } else {
24927 this._parseBase(number, base, start);
24928 }
24929
24930 if (number[0] === '-') {
24931 this.negative = 1;
24932 }
24933
24934 this.strip();
24935
24936 if (endian !== 'le') return;
24937
24938 this._initArray(this.toArray(), base, endian);
24939 };
24940
24941 BN.prototype._initNumber = function _initNumber (number, base, endian) {
24942 if (number < 0) {
24943 this.negative = 1;
24944 number = -number;
24945 }
24946 if (number < 0x4000000) {
24947 this.words = [ number & 0x3ffffff ];
24948 this.length = 1;
24949 } else if (number < 0x10000000000000) {
24950 this.words = [
24951 number & 0x3ffffff,
24952 (number / 0x4000000) & 0x3ffffff
24953 ];
24954 this.length = 2;
24955 } else {
24956 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
24957 this.words = [
24958 number & 0x3ffffff,
24959 (number / 0x4000000) & 0x3ffffff,
24960 1
24961 ];
24962 this.length = 3;
24963 }
24964
24965 if (endian !== 'le') return;
24966
24967 // Reverse the bytes
24968 this._initArray(this.toArray(), base, endian);
24969 };
24970
24971 BN.prototype._initArray = function _initArray (number, base, endian) {
24972 // Perhaps a Uint8Array
24973 assert(typeof number.length === 'number');
24974 if (number.length <= 0) {
24975 this.words = [ 0 ];
24976 this.length = 1;
24977 return this;
24978 }
24979
24980 this.length = Math.ceil(number.length / 3);
24981 this.words = new Array(this.length);
24982 for (var i = 0; i < this.length; i++) {
24983 this.words[i] = 0;
24984 }
24985
24986 var j, w;
24987 var off = 0;
24988 if (endian === 'be') {
24989 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
24990 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
24991 this.words[j] |= (w << off) & 0x3ffffff;
24992 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
24993 off += 24;
24994 if (off >= 26) {
24995 off -= 26;
24996 j++;
24997 }
24998 }
24999 } else if (endian === 'le') {
25000 for (i = 0, j = 0; i < number.length; i += 3) {
25001 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
25002 this.words[j] |= (w << off) & 0x3ffffff;
25003 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
25004 off += 24;
25005 if (off >= 26) {
25006 off -= 26;
25007 j++;
25008 }
25009 }
25010 }
25011 return this.strip();
25012 };
25013
25014 function parseHex (str, start, end) {
25015 var r = 0;
25016 var len = Math.min(str.length, end);
25017 for (var i = start; i < len; i++) {
25018 var c = str.charCodeAt(i) - 48;
25019
25020 r <<= 4;
25021
25022 // 'a' - 'f'
25023 if (c >= 49 && c <= 54) {
25024 r |= c - 49 + 0xa;
25025
25026 // 'A' - 'F'
25027 } else if (c >= 17 && c <= 22) {
25028 r |= c - 17 + 0xa;
25029
25030 // '0' - '9'
25031 } else {
25032 r |= c & 0xf;
25033 }
25034 }
25035 return r;
25036 }
25037
25038 BN.prototype._parseHex = function _parseHex (number, start) {
25039 // Create possibly bigger array to ensure that it fits the number
25040 this.length = Math.ceil((number.length - start) / 6);
25041 this.words = new Array(this.length);
25042 for (var i = 0; i < this.length; i++) {
25043 this.words[i] = 0;
25044 }
25045
25046 var j, w;
25047 // Scan 24-bit chunks and add them to the number
25048 var off = 0;
25049 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
25050 w = parseHex(number, i, i + 6);
25051 this.words[j] |= (w << off) & 0x3ffffff;
25052 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
25053 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
25054 off += 24;
25055 if (off >= 26) {
25056 off -= 26;
25057 j++;
25058 }
25059 }
25060 if (i + 6 !== start) {
25061 w = parseHex(number, start, i + 6);
25062 this.words[j] |= (w << off) & 0x3ffffff;
25063 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
25064 }
25065 this.strip();
25066 };
25067
25068 function parseBase (str, start, end, mul) {
25069 var r = 0;
25070 var len = Math.min(str.length, end);
25071 for (var i = start; i < len; i++) {
25072 var c = str.charCodeAt(i) - 48;
25073
25074 r *= mul;
25075
25076 // 'a'
25077 if (c >= 49) {
25078 r += c - 49 + 0xa;
25079
25080 // 'A'
25081 } else if (c >= 17) {
25082 r += c - 17 + 0xa;
25083
25084 // '0' - '9'
25085 } else {
25086 r += c;
25087 }
25088 }
25089 return r;
25090 }
25091
25092 BN.prototype._parseBase = function _parseBase (number, base, start) {
25093 // Initialize as zero
25094 this.words = [ 0 ];
25095 this.length = 1;
25096
25097 // Find length of limb in base
25098 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
25099 limbLen++;
25100 }
25101 limbLen--;
25102 limbPow = (limbPow / base) | 0;
25103
25104 var total = number.length - start;
25105 var mod = total % limbLen;
25106 var end = Math.min(total, total - mod) + start;
25107
25108 var word = 0;
25109 for (var i = start; i < end; i += limbLen) {
25110 word = parseBase(number, i, i + limbLen, base);
25111
25112 this.imuln(limbPow);
25113 if (this.words[0] + word < 0x4000000) {
25114 this.words[0] += word;
25115 } else {
25116 this._iaddn(word);
25117 }
25118 }
25119
25120 if (mod !== 0) {
25121 var pow = 1;
25122 word = parseBase(number, i, number.length, base);
25123
25124 for (i = 0; i < mod; i++) {
25125 pow *= base;
25126 }
25127
25128 this.imuln(pow);
25129 if (this.words[0] + word < 0x4000000) {
25130 this.words[0] += word;
25131 } else {
25132 this._iaddn(word);
25133 }
25134 }
25135 };
25136
25137 BN.prototype.copy = function copy (dest) {
25138 dest.words = new Array(this.length);
25139 for (var i = 0; i < this.length; i++) {
25140 dest.words[i] = this.words[i];
25141 }
25142 dest.length = this.length;
25143 dest.negative = this.negative;
25144 dest.red = this.red;
25145 };
25146
25147 BN.prototype.clone = function clone () {
25148 var r = new BN(null);
25149 this.copy(r);
25150 return r;
25151 };
25152
25153 BN.prototype._expand = function _expand (size) {
25154 while (this.length < size) {
25155 this.words[this.length++] = 0;
25156 }
25157 return this;
25158 };
25159
25160 // Remove leading `0` from `this`
25161 BN.prototype.strip = function strip () {
25162 while (this.length > 1 && this.words[this.length - 1] === 0) {
25163 this.length--;
25164 }
25165 return this._normSign();
25166 };
25167
25168 BN.prototype._normSign = function _normSign () {
25169 // -0 = 0
25170 if (this.length === 1 && this.words[0] === 0) {
25171 this.negative = 0;
25172 }
25173 return this;
25174 };
25175
25176 BN.prototype.inspect = function inspect () {
25177 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
25178 };
25179
25180 /*
25181
25182 var zeros = [];
25183 var groupSizes = [];
25184 var groupBases = [];
25185
25186 var s = '';
25187 var i = -1;
25188 while (++i < BN.wordSize) {
25189 zeros[i] = s;
25190 s += '0';
25191 }
25192 groupSizes[0] = 0;
25193 groupSizes[1] = 0;
25194 groupBases[0] = 0;
25195 groupBases[1] = 0;
25196 var base = 2 - 1;
25197 while (++base < 36 + 1) {
25198 var groupSize = 0;
25199 var groupBase = 1;
25200 while (groupBase < (1 << BN.wordSize) / base) {
25201 groupBase *= base;
25202 groupSize += 1;
25203 }
25204 groupSizes[base] = groupSize;
25205 groupBases[base] = groupBase;
25206 }
25207
25208 */
25209
25210 var zeros = [
25211 '',
25212 '0',
25213 '00',
25214 '000',
25215 '0000',
25216 '00000',
25217 '000000',
25218 '0000000',
25219 '00000000',
25220 '000000000',
25221 '0000000000',
25222 '00000000000',
25223 '000000000000',
25224 '0000000000000',
25225 '00000000000000',
25226 '000000000000000',
25227 '0000000000000000',
25228 '00000000000000000',
25229 '000000000000000000',
25230 '0000000000000000000',
25231 '00000000000000000000',
25232 '000000000000000000000',
25233 '0000000000000000000000',
25234 '00000000000000000000000',
25235 '000000000000000000000000',
25236 '0000000000000000000000000'
25237 ];
25238
25239 var groupSizes = [
25240 0, 0,
25241 25, 16, 12, 11, 10, 9, 8,
25242 8, 7, 7, 7, 7, 6, 6,
25243 6, 6, 6, 6, 6, 5, 5,
25244 5, 5, 5, 5, 5, 5, 5,
25245 5, 5, 5, 5, 5, 5, 5
25246 ];
25247
25248 var groupBases = [
25249 0, 0,
25250 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
25251 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
25252 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
25253 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
25254 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
25255 ];
25256
25257 BN.prototype.toString = function toString (base, padding) {
25258 base = base || 10;
25259 padding = padding | 0 || 1;
25260
25261 var out;
25262 if (base === 16 || base === 'hex') {
25263 out = '';
25264 var off = 0;
25265 var carry = 0;
25266 for (var i = 0; i < this.length; i++) {
25267 var w = this.words[i];
25268 var word = (((w << off) | carry) & 0xffffff).toString(16);
25269 carry = (w >>> (24 - off)) & 0xffffff;
25270 if (carry !== 0 || i !== this.length - 1) {
25271 out = zeros[6 - word.length] + word + out;
25272 } else {
25273 out = word + out;
25274 }
25275 off += 2;
25276 if (off >= 26) {
25277 off -= 26;
25278 i--;
25279 }
25280 }
25281 if (carry !== 0) {
25282 out = carry.toString(16) + out;
25283 }
25284 while (out.length % padding !== 0) {
25285 out = '0' + out;
25286 }
25287 if (this.negative !== 0) {
25288 out = '-' + out;
25289 }
25290 return out;
25291 }
25292
25293 if (base === (base | 0) && base >= 2 && base <= 36) {
25294 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
25295 var groupSize = groupSizes[base];
25296 // var groupBase = Math.pow(base, groupSize);
25297 var groupBase = groupBases[base];
25298 out = '';
25299 var c = this.clone();
25300 c.negative = 0;
25301 while (!c.isZero()) {
25302 var r = c.modn(groupBase).toString(base);
25303 c = c.idivn(groupBase);
25304
25305 if (!c.isZero()) {
25306 out = zeros[groupSize - r.length] + r + out;
25307 } else {
25308 out = r + out;
25309 }
25310 }
25311 if (this.isZero()) {
25312 out = '0' + out;
25313 }
25314 while (out.length % padding !== 0) {
25315 out = '0' + out;
25316 }
25317 if (this.negative !== 0) {
25318 out = '-' + out;
25319 }
25320 return out;
25321 }
25322
25323 assert(false, 'Base should be between 2 and 36');
25324 };
25325
25326 BN.prototype.toNumber = function toNumber () {
25327 var ret = this.words[0];
25328 if (this.length === 2) {
25329 ret += this.words[1] * 0x4000000;
25330 } else if (this.length === 3 && this.words[2] === 0x01) {
25331 // NOTE: at this stage it is known that the top bit is set
25332 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
25333 } else if (this.length > 2) {
25334 assert(false, 'Number can only safely store up to 53 bits');
25335 }
25336 return (this.negative !== 0) ? -ret : ret;
25337 };
25338
25339 BN.prototype.toJSON = function toJSON () {
25340 return this.toString(16);
25341 };
25342
25343 BN.prototype.toBuffer = function toBuffer (endian, length) {
25344 assert(typeof Buffer !== 'undefined');
25345 return this.toArrayLike(Buffer, endian, length);
25346 };
25347
25348 BN.prototype.toArray = function toArray (endian, length) {
25349 return this.toArrayLike(Array, endian, length);
25350 };
25351
25352 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
25353 var byteLength = this.byteLength();
25354 var reqLength = length || Math.max(1, byteLength);
25355 assert(byteLength <= reqLength, 'byte array longer than desired length');
25356 assert(reqLength > 0, 'Requested array length <= 0');
25357
25358 this.strip();
25359 var littleEndian = endian === 'le';
25360 var res = new ArrayType(reqLength);
25361
25362 var b, i;
25363 var q = this.clone();
25364 if (!littleEndian) {
25365 // Assume big-endian
25366 for (i = 0; i < reqLength - byteLength; i++) {
25367 res[i] = 0;
25368 }
25369
25370 for (i = 0; !q.isZero(); i++) {
25371 b = q.andln(0xff);
25372 q.iushrn(8);
25373
25374 res[reqLength - i - 1] = b;
25375 }
25376 } else {
25377 for (i = 0; !q.isZero(); i++) {
25378 b = q.andln(0xff);
25379 q.iushrn(8);
25380
25381 res[i] = b;
25382 }
25383
25384 for (; i < reqLength; i++) {
25385 res[i] = 0;
25386 }
25387 }
25388
25389 return res;
25390 };
25391
25392 if (Math.clz32) {
25393 BN.prototype._countBits = function _countBits (w) {
25394 return 32 - Math.clz32(w);
25395 };
25396 } else {
25397 BN.prototype._countBits = function _countBits (w) {
25398 var t = w;
25399 var r = 0;
25400 if (t >= 0x1000) {
25401 r += 13;
25402 t >>>= 13;
25403 }
25404 if (t >= 0x40) {
25405 r += 7;
25406 t >>>= 7;
25407 }
25408 if (t >= 0x8) {
25409 r += 4;
25410 t >>>= 4;
25411 }
25412 if (t >= 0x02) {
25413 r += 2;
25414 t >>>= 2;
25415 }
25416 return r + t;
25417 };
25418 }
25419
25420 BN.prototype._zeroBits = function _zeroBits (w) {
25421 // Short-cut
25422 if (w === 0) return 26;
25423
25424 var t = w;
25425 var r = 0;
25426 if ((t & 0x1fff) === 0) {
25427 r += 13;
25428 t >>>= 13;
25429 }
25430 if ((t & 0x7f) === 0) {
25431 r += 7;
25432 t >>>= 7;
25433 }
25434 if ((t & 0xf) === 0) {
25435 r += 4;
25436 t >>>= 4;
25437 }
25438 if ((t & 0x3) === 0) {
25439 r += 2;
25440 t >>>= 2;
25441 }
25442 if ((t & 0x1) === 0) {
25443 r++;
25444 }
25445 return r;
25446 };
25447
25448 // Return number of used bits in a BN
25449 BN.prototype.bitLength = function bitLength () {
25450 var w = this.words[this.length - 1];
25451 var hi = this._countBits(w);
25452 return (this.length - 1) * 26 + hi;
25453 };
25454
25455 function toBitArray (num) {
25456 var w = new Array(num.bitLength());
25457
25458 for (var bit = 0; bit < w.length; bit++) {
25459 var off = (bit / 26) | 0;
25460 var wbit = bit % 26;
25461
25462 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
25463 }
25464
25465 return w;
25466 }
25467
25468 // Number of trailing zero bits
25469 BN.prototype.zeroBits = function zeroBits () {
25470 if (this.isZero()) return 0;
25471
25472 var r = 0;
25473 for (var i = 0; i < this.length; i++) {
25474 var b = this._zeroBits(this.words[i]);
25475 r += b;
25476 if (b !== 26) break;
25477 }
25478 return r;
25479 };
25480
25481 BN.prototype.byteLength = function byteLength () {
25482 return Math.ceil(this.bitLength() / 8);
25483 };
25484
25485 BN.prototype.toTwos = function toTwos (width) {
25486 if (this.negative !== 0) {
25487 return this.abs().inotn(width).iaddn(1);
25488 }
25489 return this.clone();
25490 };
25491
25492 BN.prototype.fromTwos = function fromTwos (width) {
25493 if (this.testn(width - 1)) {
25494 return this.notn(width).iaddn(1).ineg();
25495 }
25496 return this.clone();
25497 };
25498
25499 BN.prototype.isNeg = function isNeg () {
25500 return this.negative !== 0;
25501 };
25502
25503 // Return negative clone of `this`
25504 BN.prototype.neg = function neg () {
25505 return this.clone().ineg();
25506 };
25507
25508 BN.prototype.ineg = function ineg () {
25509 if (!this.isZero()) {
25510 this.negative ^= 1;
25511 }
25512
25513 return this;
25514 };
25515
25516 // Or `num` with `this` in-place
25517 BN.prototype.iuor = function iuor (num) {
25518 while (this.length < num.length) {
25519 this.words[this.length++] = 0;
25520 }
25521
25522 for (var i = 0; i < num.length; i++) {
25523 this.words[i] = this.words[i] | num.words[i];
25524 }
25525
25526 return this.strip();
25527 };
25528
25529 BN.prototype.ior = function ior (num) {
25530 assert((this.negative | num.negative) === 0);
25531 return this.iuor(num);
25532 };
25533
25534 // Or `num` with `this`
25535 BN.prototype.or = function or (num) {
25536 if (this.length > num.length) return this.clone().ior(num);
25537 return num.clone().ior(this);
25538 };
25539
25540 BN.prototype.uor = function uor (num) {
25541 if (this.length > num.length) return this.clone().iuor(num);
25542 return num.clone().iuor(this);
25543 };
25544
25545 // And `num` with `this` in-place
25546 BN.prototype.iuand = function iuand (num) {
25547 // b = min-length(num, this)
25548 var b;
25549 if (this.length > num.length) {
25550 b = num;
25551 } else {
25552 b = this;
25553 }
25554
25555 for (var i = 0; i < b.length; i++) {
25556 this.words[i] = this.words[i] & num.words[i];
25557 }
25558
25559 this.length = b.length;
25560
25561 return this.strip();
25562 };
25563
25564 BN.prototype.iand = function iand (num) {
25565 assert((this.negative | num.negative) === 0);
25566 return this.iuand(num);
25567 };
25568
25569 // And `num` with `this`
25570 BN.prototype.and = function and (num) {
25571 if (this.length > num.length) return this.clone().iand(num);
25572 return num.clone().iand(this);
25573 };
25574
25575 BN.prototype.uand = function uand (num) {
25576 if (this.length > num.length) return this.clone().iuand(num);
25577 return num.clone().iuand(this);
25578 };
25579
25580 // Xor `num` with `this` in-place
25581 BN.prototype.iuxor = function iuxor (num) {
25582 // a.length > b.length
25583 var a;
25584 var b;
25585 if (this.length > num.length) {
25586 a = this;
25587 b = num;
25588 } else {
25589 a = num;
25590 b = this;
25591 }
25592
25593 for (var i = 0; i < b.length; i++) {
25594 this.words[i] = a.words[i] ^ b.words[i];
25595 }
25596
25597 if (this !== a) {
25598 for (; i < a.length; i++) {
25599 this.words[i] = a.words[i];
25600 }
25601 }
25602
25603 this.length = a.length;
25604
25605 return this.strip();
25606 };
25607
25608 BN.prototype.ixor = function ixor (num) {
25609 assert((this.negative | num.negative) === 0);
25610 return this.iuxor(num);
25611 };
25612
25613 // Xor `num` with `this`
25614 BN.prototype.xor = function xor (num) {
25615 if (this.length > num.length) return this.clone().ixor(num);
25616 return num.clone().ixor(this);
25617 };
25618
25619 BN.prototype.uxor = function uxor (num) {
25620 if (this.length > num.length) return this.clone().iuxor(num);
25621 return num.clone().iuxor(this);
25622 };
25623
25624 // Not ``this`` with ``width`` bitwidth
25625 BN.prototype.inotn = function inotn (width) {
25626 assert(typeof width === 'number' && width >= 0);
25627
25628 var bytesNeeded = Math.ceil(width / 26) | 0;
25629 var bitsLeft = width % 26;
25630
25631 // Extend the buffer with leading zeroes
25632 this._expand(bytesNeeded);
25633
25634 if (bitsLeft > 0) {
25635 bytesNeeded--;
25636 }
25637
25638 // Handle complete words
25639 for (var i = 0; i < bytesNeeded; i++) {
25640 this.words[i] = ~this.words[i] & 0x3ffffff;
25641 }
25642
25643 // Handle the residue
25644 if (bitsLeft > 0) {
25645 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
25646 }
25647
25648 // And remove leading zeroes
25649 return this.strip();
25650 };
25651
25652 BN.prototype.notn = function notn (width) {
25653 return this.clone().inotn(width);
25654 };
25655
25656 // Set `bit` of `this`
25657 BN.prototype.setn = function setn (bit, val) {
25658 assert(typeof bit === 'number' && bit >= 0);
25659
25660 var off = (bit / 26) | 0;
25661 var wbit = bit % 26;
25662
25663 this._expand(off + 1);
25664
25665 if (val) {
25666 this.words[off] = this.words[off] | (1 << wbit);
25667 } else {
25668 this.words[off] = this.words[off] & ~(1 << wbit);
25669 }
25670
25671 return this.strip();
25672 };
25673
25674 // Add `num` to `this` in-place
25675 BN.prototype.iadd = function iadd (num) {
25676 var r;
25677
25678 // negative + positive
25679 if (this.negative !== 0 && num.negative === 0) {
25680 this.negative = 0;
25681 r = this.isub(num);
25682 this.negative ^= 1;
25683 return this._normSign();
25684
25685 // positive + negative
25686 } else if (this.negative === 0 && num.negative !== 0) {
25687 num.negative = 0;
25688 r = this.isub(num);
25689 num.negative = 1;
25690 return r._normSign();
25691 }
25692
25693 // a.length > b.length
25694 var a, b;
25695 if (this.length > num.length) {
25696 a = this;
25697 b = num;
25698 } else {
25699 a = num;
25700 b = this;
25701 }
25702
25703 var carry = 0;
25704 for (var i = 0; i < b.length; i++) {
25705 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
25706 this.words[i] = r & 0x3ffffff;
25707 carry = r >>> 26;
25708 }
25709 for (; carry !== 0 && i < a.length; i++) {
25710 r = (a.words[i] | 0) + carry;
25711 this.words[i] = r & 0x3ffffff;
25712 carry = r >>> 26;
25713 }
25714
25715 this.length = a.length;
25716 if (carry !== 0) {
25717 this.words[this.length] = carry;
25718 this.length++;
25719 // Copy the rest of the words
25720 } else if (a !== this) {
25721 for (; i < a.length; i++) {
25722 this.words[i] = a.words[i];
25723 }
25724 }
25725
25726 return this;
25727 };
25728
25729 // Add `num` to `this`
25730 BN.prototype.add = function add (num) {
25731 var res;
25732 if (num.negative !== 0 && this.negative === 0) {
25733 num.negative = 0;
25734 res = this.sub(num);
25735 num.negative ^= 1;
25736 return res;
25737 } else if (num.negative === 0 && this.negative !== 0) {
25738 this.negative = 0;
25739 res = num.sub(this);
25740 this.negative = 1;
25741 return res;
25742 }
25743
25744 if (this.length > num.length) return this.clone().iadd(num);
25745
25746 return num.clone().iadd(this);
25747 };
25748
25749 // Subtract `num` from `this` in-place
25750 BN.prototype.isub = function isub (num) {
25751 // this - (-num) = this + num
25752 if (num.negative !== 0) {
25753 num.negative = 0;
25754 var r = this.iadd(num);
25755 num.negative = 1;
25756 return r._normSign();
25757
25758 // -this - num = -(this + num)
25759 } else if (this.negative !== 0) {
25760 this.negative = 0;
25761 this.iadd(num);
25762 this.negative = 1;
25763 return this._normSign();
25764 }
25765
25766 // At this point both numbers are positive
25767 var cmp = this.cmp(num);
25768
25769 // Optimization - zeroify
25770 if (cmp === 0) {
25771 this.negative = 0;
25772 this.length = 1;
25773 this.words[0] = 0;
25774 return this;
25775 }
25776
25777 // a > b
25778 var a, b;
25779 if (cmp > 0) {
25780 a = this;
25781 b = num;
25782 } else {
25783 a = num;
25784 b = this;
25785 }
25786
25787 var carry = 0;
25788 for (var i = 0; i < b.length; i++) {
25789 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
25790 carry = r >> 26;
25791 this.words[i] = r & 0x3ffffff;
25792 }
25793 for (; carry !== 0 && i < a.length; i++) {
25794 r = (a.words[i] | 0) + carry;
25795 carry = r >> 26;
25796 this.words[i] = r & 0x3ffffff;
25797 }
25798
25799 // Copy rest of the words
25800 if (carry === 0 && i < a.length && a !== this) {
25801 for (; i < a.length; i++) {
25802 this.words[i] = a.words[i];
25803 }
25804 }
25805
25806 this.length = Math.max(this.length, i);
25807
25808 if (a !== this) {
25809 this.negative = 1;
25810 }
25811
25812 return this.strip();
25813 };
25814
25815 // Subtract `num` from `this`
25816 BN.prototype.sub = function sub (num) {
25817 return this.clone().isub(num);
25818 };
25819
25820 function smallMulTo (self, num, out) {
25821 out.negative = num.negative ^ self.negative;
25822 var len = (self.length + num.length) | 0;
25823 out.length = len;
25824 len = (len - 1) | 0;
25825
25826 // Peel one iteration (compiler can't do it, because of code complexity)
25827 var a = self.words[0] | 0;
25828 var b = num.words[0] | 0;
25829 var r = a * b;
25830
25831 var lo = r & 0x3ffffff;
25832 var carry = (r / 0x4000000) | 0;
25833 out.words[0] = lo;
25834
25835 for (var k = 1; k < len; k++) {
25836 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
25837 // note that ncarry could be >= 0x3ffffff
25838 var ncarry = carry >>> 26;
25839 var rword = carry & 0x3ffffff;
25840 var maxJ = Math.min(k, num.length - 1);
25841 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
25842 var i = (k - j) | 0;
25843 a = self.words[i] | 0;
25844 b = num.words[j] | 0;
25845 r = a * b + rword;
25846 ncarry += (r / 0x4000000) | 0;
25847 rword = r & 0x3ffffff;
25848 }
25849 out.words[k] = rword | 0;
25850 carry = ncarry | 0;
25851 }
25852 if (carry !== 0) {
25853 out.words[k] = carry | 0;
25854 } else {
25855 out.length--;
25856 }
25857
25858 return out.strip();
25859 }
25860
25861 // TODO(indutny): it may be reasonable to omit it for users who don't need
25862 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
25863 // multiplication (like elliptic secp256k1).
25864 var comb10MulTo = function comb10MulTo (self, num, out) {
25865 var a = self.words;
25866 var b = num.words;
25867 var o = out.words;
25868 var c = 0;
25869 var lo;
25870 var mid;
25871 var hi;
25872 var a0 = a[0] | 0;
25873 var al0 = a0 & 0x1fff;
25874 var ah0 = a0 >>> 13;
25875 var a1 = a[1] | 0;
25876 var al1 = a1 & 0x1fff;
25877 var ah1 = a1 >>> 13;
25878 var a2 = a[2] | 0;
25879 var al2 = a2 & 0x1fff;
25880 var ah2 = a2 >>> 13;
25881 var a3 = a[3] | 0;
25882 var al3 = a3 & 0x1fff;
25883 var ah3 = a3 >>> 13;
25884 var a4 = a[4] | 0;
25885 var al4 = a4 & 0x1fff;
25886 var ah4 = a4 >>> 13;
25887 var a5 = a[5] | 0;
25888 var al5 = a5 & 0x1fff;
25889 var ah5 = a5 >>> 13;
25890 var a6 = a[6] | 0;
25891 var al6 = a6 & 0x1fff;
25892 var ah6 = a6 >>> 13;
25893 var a7 = a[7] | 0;
25894 var al7 = a7 & 0x1fff;
25895 var ah7 = a7 >>> 13;
25896 var a8 = a[8] | 0;
25897 var al8 = a8 & 0x1fff;
25898 var ah8 = a8 >>> 13;
25899 var a9 = a[9] | 0;
25900 var al9 = a9 & 0x1fff;
25901 var ah9 = a9 >>> 13;
25902 var b0 = b[0] | 0;
25903 var bl0 = b0 & 0x1fff;
25904 var bh0 = b0 >>> 13;
25905 var b1 = b[1] | 0;
25906 var bl1 = b1 & 0x1fff;
25907 var bh1 = b1 >>> 13;
25908 var b2 = b[2] | 0;
25909 var bl2 = b2 & 0x1fff;
25910 var bh2 = b2 >>> 13;
25911 var b3 = b[3] | 0;
25912 var bl3 = b3 & 0x1fff;
25913 var bh3 = b3 >>> 13;
25914 var b4 = b[4] | 0;
25915 var bl4 = b4 & 0x1fff;
25916 var bh4 = b4 >>> 13;
25917 var b5 = b[5] | 0;
25918 var bl5 = b5 & 0x1fff;
25919 var bh5 = b5 >>> 13;
25920 var b6 = b[6] | 0;
25921 var bl6 = b6 & 0x1fff;
25922 var bh6 = b6 >>> 13;
25923 var b7 = b[7] | 0;
25924 var bl7 = b7 & 0x1fff;
25925 var bh7 = b7 >>> 13;
25926 var b8 = b[8] | 0;
25927 var bl8 = b8 & 0x1fff;
25928 var bh8 = b8 >>> 13;
25929 var b9 = b[9] | 0;
25930 var bl9 = b9 & 0x1fff;
25931 var bh9 = b9 >>> 13;
25932
25933 out.negative = self.negative ^ num.negative;
25934 out.length = 19;
25935 /* k = 0 */
25936 lo = Math.imul(al0, bl0);
25937 mid = Math.imul(al0, bh0);
25938 mid = (mid + Math.imul(ah0, bl0)) | 0;
25939 hi = Math.imul(ah0, bh0);
25940 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25941 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
25942 w0 &= 0x3ffffff;
25943 /* k = 1 */
25944 lo = Math.imul(al1, bl0);
25945 mid = Math.imul(al1, bh0);
25946 mid = (mid + Math.imul(ah1, bl0)) | 0;
25947 hi = Math.imul(ah1, bh0);
25948 lo = (lo + Math.imul(al0, bl1)) | 0;
25949 mid = (mid + Math.imul(al0, bh1)) | 0;
25950 mid = (mid + Math.imul(ah0, bl1)) | 0;
25951 hi = (hi + Math.imul(ah0, bh1)) | 0;
25952 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25953 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
25954 w1 &= 0x3ffffff;
25955 /* k = 2 */
25956 lo = Math.imul(al2, bl0);
25957 mid = Math.imul(al2, bh0);
25958 mid = (mid + Math.imul(ah2, bl0)) | 0;
25959 hi = Math.imul(ah2, bh0);
25960 lo = (lo + Math.imul(al1, bl1)) | 0;
25961 mid = (mid + Math.imul(al1, bh1)) | 0;
25962 mid = (mid + Math.imul(ah1, bl1)) | 0;
25963 hi = (hi + Math.imul(ah1, bh1)) | 0;
25964 lo = (lo + Math.imul(al0, bl2)) | 0;
25965 mid = (mid + Math.imul(al0, bh2)) | 0;
25966 mid = (mid + Math.imul(ah0, bl2)) | 0;
25967 hi = (hi + Math.imul(ah0, bh2)) | 0;
25968 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25969 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
25970 w2 &= 0x3ffffff;
25971 /* k = 3 */
25972 lo = Math.imul(al3, bl0);
25973 mid = Math.imul(al3, bh0);
25974 mid = (mid + Math.imul(ah3, bl0)) | 0;
25975 hi = Math.imul(ah3, bh0);
25976 lo = (lo + Math.imul(al2, bl1)) | 0;
25977 mid = (mid + Math.imul(al2, bh1)) | 0;
25978 mid = (mid + Math.imul(ah2, bl1)) | 0;
25979 hi = (hi + Math.imul(ah2, bh1)) | 0;
25980 lo = (lo + Math.imul(al1, bl2)) | 0;
25981 mid = (mid + Math.imul(al1, bh2)) | 0;
25982 mid = (mid + Math.imul(ah1, bl2)) | 0;
25983 hi = (hi + Math.imul(ah1, bh2)) | 0;
25984 lo = (lo + Math.imul(al0, bl3)) | 0;
25985 mid = (mid + Math.imul(al0, bh3)) | 0;
25986 mid = (mid + Math.imul(ah0, bl3)) | 0;
25987 hi = (hi + Math.imul(ah0, bh3)) | 0;
25988 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25989 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
25990 w3 &= 0x3ffffff;
25991 /* k = 4 */
25992 lo = Math.imul(al4, bl0);
25993 mid = Math.imul(al4, bh0);
25994 mid = (mid + Math.imul(ah4, bl0)) | 0;
25995 hi = Math.imul(ah4, bh0);
25996 lo = (lo + Math.imul(al3, bl1)) | 0;
25997 mid = (mid + Math.imul(al3, bh1)) | 0;
25998 mid = (mid + Math.imul(ah3, bl1)) | 0;
25999 hi = (hi + Math.imul(ah3, bh1)) | 0;
26000 lo = (lo + Math.imul(al2, bl2)) | 0;
26001 mid = (mid + Math.imul(al2, bh2)) | 0;
26002 mid = (mid + Math.imul(ah2, bl2)) | 0;
26003 hi = (hi + Math.imul(ah2, bh2)) | 0;
26004 lo = (lo + Math.imul(al1, bl3)) | 0;
26005 mid = (mid + Math.imul(al1, bh3)) | 0;
26006 mid = (mid + Math.imul(ah1, bl3)) | 0;
26007 hi = (hi + Math.imul(ah1, bh3)) | 0;
26008 lo = (lo + Math.imul(al0, bl4)) | 0;
26009 mid = (mid + Math.imul(al0, bh4)) | 0;
26010 mid = (mid + Math.imul(ah0, bl4)) | 0;
26011 hi = (hi + Math.imul(ah0, bh4)) | 0;
26012 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26013 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
26014 w4 &= 0x3ffffff;
26015 /* k = 5 */
26016 lo = Math.imul(al5, bl0);
26017 mid = Math.imul(al5, bh0);
26018 mid = (mid + Math.imul(ah5, bl0)) | 0;
26019 hi = Math.imul(ah5, bh0);
26020 lo = (lo + Math.imul(al4, bl1)) | 0;
26021 mid = (mid + Math.imul(al4, bh1)) | 0;
26022 mid = (mid + Math.imul(ah4, bl1)) | 0;
26023 hi = (hi + Math.imul(ah4, bh1)) | 0;
26024 lo = (lo + Math.imul(al3, bl2)) | 0;
26025 mid = (mid + Math.imul(al3, bh2)) | 0;
26026 mid = (mid + Math.imul(ah3, bl2)) | 0;
26027 hi = (hi + Math.imul(ah3, bh2)) | 0;
26028 lo = (lo + Math.imul(al2, bl3)) | 0;
26029 mid = (mid + Math.imul(al2, bh3)) | 0;
26030 mid = (mid + Math.imul(ah2, bl3)) | 0;
26031 hi = (hi + Math.imul(ah2, bh3)) | 0;
26032 lo = (lo + Math.imul(al1, bl4)) | 0;
26033 mid = (mid + Math.imul(al1, bh4)) | 0;
26034 mid = (mid + Math.imul(ah1, bl4)) | 0;
26035 hi = (hi + Math.imul(ah1, bh4)) | 0;
26036 lo = (lo + Math.imul(al0, bl5)) | 0;
26037 mid = (mid + Math.imul(al0, bh5)) | 0;
26038 mid = (mid + Math.imul(ah0, bl5)) | 0;
26039 hi = (hi + Math.imul(ah0, bh5)) | 0;
26040 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26041 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
26042 w5 &= 0x3ffffff;
26043 /* k = 6 */
26044 lo = Math.imul(al6, bl0);
26045 mid = Math.imul(al6, bh0);
26046 mid = (mid + Math.imul(ah6, bl0)) | 0;
26047 hi = Math.imul(ah6, bh0);
26048 lo = (lo + Math.imul(al5, bl1)) | 0;
26049 mid = (mid + Math.imul(al5, bh1)) | 0;
26050 mid = (mid + Math.imul(ah5, bl1)) | 0;
26051 hi = (hi + Math.imul(ah5, bh1)) | 0;
26052 lo = (lo + Math.imul(al4, bl2)) | 0;
26053 mid = (mid + Math.imul(al4, bh2)) | 0;
26054 mid = (mid + Math.imul(ah4, bl2)) | 0;
26055 hi = (hi + Math.imul(ah4, bh2)) | 0;
26056 lo = (lo + Math.imul(al3, bl3)) | 0;
26057 mid = (mid + Math.imul(al3, bh3)) | 0;
26058 mid = (mid + Math.imul(ah3, bl3)) | 0;
26059 hi = (hi + Math.imul(ah3, bh3)) | 0;
26060 lo = (lo + Math.imul(al2, bl4)) | 0;
26061 mid = (mid + Math.imul(al2, bh4)) | 0;
26062 mid = (mid + Math.imul(ah2, bl4)) | 0;
26063 hi = (hi + Math.imul(ah2, bh4)) | 0;
26064 lo = (lo + Math.imul(al1, bl5)) | 0;
26065 mid = (mid + Math.imul(al1, bh5)) | 0;
26066 mid = (mid + Math.imul(ah1, bl5)) | 0;
26067 hi = (hi + Math.imul(ah1, bh5)) | 0;
26068 lo = (lo + Math.imul(al0, bl6)) | 0;
26069 mid = (mid + Math.imul(al0, bh6)) | 0;
26070 mid = (mid + Math.imul(ah0, bl6)) | 0;
26071 hi = (hi + Math.imul(ah0, bh6)) | 0;
26072 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26073 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
26074 w6 &= 0x3ffffff;
26075 /* k = 7 */
26076 lo = Math.imul(al7, bl0);
26077 mid = Math.imul(al7, bh0);
26078 mid = (mid + Math.imul(ah7, bl0)) | 0;
26079 hi = Math.imul(ah7, bh0);
26080 lo = (lo + Math.imul(al6, bl1)) | 0;
26081 mid = (mid + Math.imul(al6, bh1)) | 0;
26082 mid = (mid + Math.imul(ah6, bl1)) | 0;
26083 hi = (hi + Math.imul(ah6, bh1)) | 0;
26084 lo = (lo + Math.imul(al5, bl2)) | 0;
26085 mid = (mid + Math.imul(al5, bh2)) | 0;
26086 mid = (mid + Math.imul(ah5, bl2)) | 0;
26087 hi = (hi + Math.imul(ah5, bh2)) | 0;
26088 lo = (lo + Math.imul(al4, bl3)) | 0;
26089 mid = (mid + Math.imul(al4, bh3)) | 0;
26090 mid = (mid + Math.imul(ah4, bl3)) | 0;
26091 hi = (hi + Math.imul(ah4, bh3)) | 0;
26092 lo = (lo + Math.imul(al3, bl4)) | 0;
26093 mid = (mid + Math.imul(al3, bh4)) | 0;
26094 mid = (mid + Math.imul(ah3, bl4)) | 0;
26095 hi = (hi + Math.imul(ah3, bh4)) | 0;
26096 lo = (lo + Math.imul(al2, bl5)) | 0;
26097 mid = (mid + Math.imul(al2, bh5)) | 0;
26098 mid = (mid + Math.imul(ah2, bl5)) | 0;
26099 hi = (hi + Math.imul(ah2, bh5)) | 0;
26100 lo = (lo + Math.imul(al1, bl6)) | 0;
26101 mid = (mid + Math.imul(al1, bh6)) | 0;
26102 mid = (mid + Math.imul(ah1, bl6)) | 0;
26103 hi = (hi + Math.imul(ah1, bh6)) | 0;
26104 lo = (lo + Math.imul(al0, bl7)) | 0;
26105 mid = (mid + Math.imul(al0, bh7)) | 0;
26106 mid = (mid + Math.imul(ah0, bl7)) | 0;
26107 hi = (hi + Math.imul(ah0, bh7)) | 0;
26108 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26109 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
26110 w7 &= 0x3ffffff;
26111 /* k = 8 */
26112 lo = Math.imul(al8, bl0);
26113 mid = Math.imul(al8, bh0);
26114 mid = (mid + Math.imul(ah8, bl0)) | 0;
26115 hi = Math.imul(ah8, bh0);
26116 lo = (lo + Math.imul(al7, bl1)) | 0;
26117 mid = (mid + Math.imul(al7, bh1)) | 0;
26118 mid = (mid + Math.imul(ah7, bl1)) | 0;
26119 hi = (hi + Math.imul(ah7, bh1)) | 0;
26120 lo = (lo + Math.imul(al6, bl2)) | 0;
26121 mid = (mid + Math.imul(al6, bh2)) | 0;
26122 mid = (mid + Math.imul(ah6, bl2)) | 0;
26123 hi = (hi + Math.imul(ah6, bh2)) | 0;
26124 lo = (lo + Math.imul(al5, bl3)) | 0;
26125 mid = (mid + Math.imul(al5, bh3)) | 0;
26126 mid = (mid + Math.imul(ah5, bl3)) | 0;
26127 hi = (hi + Math.imul(ah5, bh3)) | 0;
26128 lo = (lo + Math.imul(al4, bl4)) | 0;
26129 mid = (mid + Math.imul(al4, bh4)) | 0;
26130 mid = (mid + Math.imul(ah4, bl4)) | 0;
26131 hi = (hi + Math.imul(ah4, bh4)) | 0;
26132 lo = (lo + Math.imul(al3, bl5)) | 0;
26133 mid = (mid + Math.imul(al3, bh5)) | 0;
26134 mid = (mid + Math.imul(ah3, bl5)) | 0;
26135 hi = (hi + Math.imul(ah3, bh5)) | 0;
26136 lo = (lo + Math.imul(al2, bl6)) | 0;
26137 mid = (mid + Math.imul(al2, bh6)) | 0;
26138 mid = (mid + Math.imul(ah2, bl6)) | 0;
26139 hi = (hi + Math.imul(ah2, bh6)) | 0;
26140 lo = (lo + Math.imul(al1, bl7)) | 0;
26141 mid = (mid + Math.imul(al1, bh7)) | 0;
26142 mid = (mid + Math.imul(ah1, bl7)) | 0;
26143 hi = (hi + Math.imul(ah1, bh7)) | 0;
26144 lo = (lo + Math.imul(al0, bl8)) | 0;
26145 mid = (mid + Math.imul(al0, bh8)) | 0;
26146 mid = (mid + Math.imul(ah0, bl8)) | 0;
26147 hi = (hi + Math.imul(ah0, bh8)) | 0;
26148 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26149 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
26150 w8 &= 0x3ffffff;
26151 /* k = 9 */
26152 lo = Math.imul(al9, bl0);
26153 mid = Math.imul(al9, bh0);
26154 mid = (mid + Math.imul(ah9, bl0)) | 0;
26155 hi = Math.imul(ah9, bh0);
26156 lo = (lo + Math.imul(al8, bl1)) | 0;
26157 mid = (mid + Math.imul(al8, bh1)) | 0;
26158 mid = (mid + Math.imul(ah8, bl1)) | 0;
26159 hi = (hi + Math.imul(ah8, bh1)) | 0;
26160 lo = (lo + Math.imul(al7, bl2)) | 0;
26161 mid = (mid + Math.imul(al7, bh2)) | 0;
26162 mid = (mid + Math.imul(ah7, bl2)) | 0;
26163 hi = (hi + Math.imul(ah7, bh2)) | 0;
26164 lo = (lo + Math.imul(al6, bl3)) | 0;
26165 mid = (mid + Math.imul(al6, bh3)) | 0;
26166 mid = (mid + Math.imul(ah6, bl3)) | 0;
26167 hi = (hi + Math.imul(ah6, bh3)) | 0;
26168 lo = (lo + Math.imul(al5, bl4)) | 0;
26169 mid = (mid + Math.imul(al5, bh4)) | 0;
26170 mid = (mid + Math.imul(ah5, bl4)) | 0;
26171 hi = (hi + Math.imul(ah5, bh4)) | 0;
26172 lo = (lo + Math.imul(al4, bl5)) | 0;
26173 mid = (mid + Math.imul(al4, bh5)) | 0;
26174 mid = (mid + Math.imul(ah4, bl5)) | 0;
26175 hi = (hi + Math.imul(ah4, bh5)) | 0;
26176 lo = (lo + Math.imul(al3, bl6)) | 0;
26177 mid = (mid + Math.imul(al3, bh6)) | 0;
26178 mid = (mid + Math.imul(ah3, bl6)) | 0;
26179 hi = (hi + Math.imul(ah3, bh6)) | 0;
26180 lo = (lo + Math.imul(al2, bl7)) | 0;
26181 mid = (mid + Math.imul(al2, bh7)) | 0;
26182 mid = (mid + Math.imul(ah2, bl7)) | 0;
26183 hi = (hi + Math.imul(ah2, bh7)) | 0;
26184 lo = (lo + Math.imul(al1, bl8)) | 0;
26185 mid = (mid + Math.imul(al1, bh8)) | 0;
26186 mid = (mid + Math.imul(ah1, bl8)) | 0;
26187 hi = (hi + Math.imul(ah1, bh8)) | 0;
26188 lo = (lo + Math.imul(al0, bl9)) | 0;
26189 mid = (mid + Math.imul(al0, bh9)) | 0;
26190 mid = (mid + Math.imul(ah0, bl9)) | 0;
26191 hi = (hi + Math.imul(ah0, bh9)) | 0;
26192 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26193 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
26194 w9 &= 0x3ffffff;
26195 /* k = 10 */
26196 lo = Math.imul(al9, bl1);
26197 mid = Math.imul(al9, bh1);
26198 mid = (mid + Math.imul(ah9, bl1)) | 0;
26199 hi = Math.imul(ah9, bh1);
26200 lo = (lo + Math.imul(al8, bl2)) | 0;
26201 mid = (mid + Math.imul(al8, bh2)) | 0;
26202 mid = (mid + Math.imul(ah8, bl2)) | 0;
26203 hi = (hi + Math.imul(ah8, bh2)) | 0;
26204 lo = (lo + Math.imul(al7, bl3)) | 0;
26205 mid = (mid + Math.imul(al7, bh3)) | 0;
26206 mid = (mid + Math.imul(ah7, bl3)) | 0;
26207 hi = (hi + Math.imul(ah7, bh3)) | 0;
26208 lo = (lo + Math.imul(al6, bl4)) | 0;
26209 mid = (mid + Math.imul(al6, bh4)) | 0;
26210 mid = (mid + Math.imul(ah6, bl4)) | 0;
26211 hi = (hi + Math.imul(ah6, bh4)) | 0;
26212 lo = (lo + Math.imul(al5, bl5)) | 0;
26213 mid = (mid + Math.imul(al5, bh5)) | 0;
26214 mid = (mid + Math.imul(ah5, bl5)) | 0;
26215 hi = (hi + Math.imul(ah5, bh5)) | 0;
26216 lo = (lo + Math.imul(al4, bl6)) | 0;
26217 mid = (mid + Math.imul(al4, bh6)) | 0;
26218 mid = (mid + Math.imul(ah4, bl6)) | 0;
26219 hi = (hi + Math.imul(ah4, bh6)) | 0;
26220 lo = (lo + Math.imul(al3, bl7)) | 0;
26221 mid = (mid + Math.imul(al3, bh7)) | 0;
26222 mid = (mid + Math.imul(ah3, bl7)) | 0;
26223 hi = (hi + Math.imul(ah3, bh7)) | 0;
26224 lo = (lo + Math.imul(al2, bl8)) | 0;
26225 mid = (mid + Math.imul(al2, bh8)) | 0;
26226 mid = (mid + Math.imul(ah2, bl8)) | 0;
26227 hi = (hi + Math.imul(ah2, bh8)) | 0;
26228 lo = (lo + Math.imul(al1, bl9)) | 0;
26229 mid = (mid + Math.imul(al1, bh9)) | 0;
26230 mid = (mid + Math.imul(ah1, bl9)) | 0;
26231 hi = (hi + Math.imul(ah1, bh9)) | 0;
26232 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26233 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
26234 w10 &= 0x3ffffff;
26235 /* k = 11 */
26236 lo = Math.imul(al9, bl2);
26237 mid = Math.imul(al9, bh2);
26238 mid = (mid + Math.imul(ah9, bl2)) | 0;
26239 hi = Math.imul(ah9, bh2);
26240 lo = (lo + Math.imul(al8, bl3)) | 0;
26241 mid = (mid + Math.imul(al8, bh3)) | 0;
26242 mid = (mid + Math.imul(ah8, bl3)) | 0;
26243 hi = (hi + Math.imul(ah8, bh3)) | 0;
26244 lo = (lo + Math.imul(al7, bl4)) | 0;
26245 mid = (mid + Math.imul(al7, bh4)) | 0;
26246 mid = (mid + Math.imul(ah7, bl4)) | 0;
26247 hi = (hi + Math.imul(ah7, bh4)) | 0;
26248 lo = (lo + Math.imul(al6, bl5)) | 0;
26249 mid = (mid + Math.imul(al6, bh5)) | 0;
26250 mid = (mid + Math.imul(ah6, bl5)) | 0;
26251 hi = (hi + Math.imul(ah6, bh5)) | 0;
26252 lo = (lo + Math.imul(al5, bl6)) | 0;
26253 mid = (mid + Math.imul(al5, bh6)) | 0;
26254 mid = (mid + Math.imul(ah5, bl6)) | 0;
26255 hi = (hi + Math.imul(ah5, bh6)) | 0;
26256 lo = (lo + Math.imul(al4, bl7)) | 0;
26257 mid = (mid + Math.imul(al4, bh7)) | 0;
26258 mid = (mid + Math.imul(ah4, bl7)) | 0;
26259 hi = (hi + Math.imul(ah4, bh7)) | 0;
26260 lo = (lo + Math.imul(al3, bl8)) | 0;
26261 mid = (mid + Math.imul(al3, bh8)) | 0;
26262 mid = (mid + Math.imul(ah3, bl8)) | 0;
26263 hi = (hi + Math.imul(ah3, bh8)) | 0;
26264 lo = (lo + Math.imul(al2, bl9)) | 0;
26265 mid = (mid + Math.imul(al2, bh9)) | 0;
26266 mid = (mid + Math.imul(ah2, bl9)) | 0;
26267 hi = (hi + Math.imul(ah2, bh9)) | 0;
26268 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26269 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
26270 w11 &= 0x3ffffff;
26271 /* k = 12 */
26272 lo = Math.imul(al9, bl3);
26273 mid = Math.imul(al9, bh3);
26274 mid = (mid + Math.imul(ah9, bl3)) | 0;
26275 hi = Math.imul(ah9, bh3);
26276 lo = (lo + Math.imul(al8, bl4)) | 0;
26277 mid = (mid + Math.imul(al8, bh4)) | 0;
26278 mid = (mid + Math.imul(ah8, bl4)) | 0;
26279 hi = (hi + Math.imul(ah8, bh4)) | 0;
26280 lo = (lo + Math.imul(al7, bl5)) | 0;
26281 mid = (mid + Math.imul(al7, bh5)) | 0;
26282 mid = (mid + Math.imul(ah7, bl5)) | 0;
26283 hi = (hi + Math.imul(ah7, bh5)) | 0;
26284 lo = (lo + Math.imul(al6, bl6)) | 0;
26285 mid = (mid + Math.imul(al6, bh6)) | 0;
26286 mid = (mid + Math.imul(ah6, bl6)) | 0;
26287 hi = (hi + Math.imul(ah6, bh6)) | 0;
26288 lo = (lo + Math.imul(al5, bl7)) | 0;
26289 mid = (mid + Math.imul(al5, bh7)) | 0;
26290 mid = (mid + Math.imul(ah5, bl7)) | 0;
26291 hi = (hi + Math.imul(ah5, bh7)) | 0;
26292 lo = (lo + Math.imul(al4, bl8)) | 0;
26293 mid = (mid + Math.imul(al4, bh8)) | 0;
26294 mid = (mid + Math.imul(ah4, bl8)) | 0;
26295 hi = (hi + Math.imul(ah4, bh8)) | 0;
26296 lo = (lo + Math.imul(al3, bl9)) | 0;
26297 mid = (mid + Math.imul(al3, bh9)) | 0;
26298 mid = (mid + Math.imul(ah3, bl9)) | 0;
26299 hi = (hi + Math.imul(ah3, bh9)) | 0;
26300 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26301 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
26302 w12 &= 0x3ffffff;
26303 /* k = 13 */
26304 lo = Math.imul(al9, bl4);
26305 mid = Math.imul(al9, bh4);
26306 mid = (mid + Math.imul(ah9, bl4)) | 0;
26307 hi = Math.imul(ah9, bh4);
26308 lo = (lo + Math.imul(al8, bl5)) | 0;
26309 mid = (mid + Math.imul(al8, bh5)) | 0;
26310 mid = (mid + Math.imul(ah8, bl5)) | 0;
26311 hi = (hi + Math.imul(ah8, bh5)) | 0;
26312 lo = (lo + Math.imul(al7, bl6)) | 0;
26313 mid = (mid + Math.imul(al7, bh6)) | 0;
26314 mid = (mid + Math.imul(ah7, bl6)) | 0;
26315 hi = (hi + Math.imul(ah7, bh6)) | 0;
26316 lo = (lo + Math.imul(al6, bl7)) | 0;
26317 mid = (mid + Math.imul(al6, bh7)) | 0;
26318 mid = (mid + Math.imul(ah6, bl7)) | 0;
26319 hi = (hi + Math.imul(ah6, bh7)) | 0;
26320 lo = (lo + Math.imul(al5, bl8)) | 0;
26321 mid = (mid + Math.imul(al5, bh8)) | 0;
26322 mid = (mid + Math.imul(ah5, bl8)) | 0;
26323 hi = (hi + Math.imul(ah5, bh8)) | 0;
26324 lo = (lo + Math.imul(al4, bl9)) | 0;
26325 mid = (mid + Math.imul(al4, bh9)) | 0;
26326 mid = (mid + Math.imul(ah4, bl9)) | 0;
26327 hi = (hi + Math.imul(ah4, bh9)) | 0;
26328 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26329 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
26330 w13 &= 0x3ffffff;
26331 /* k = 14 */
26332 lo = Math.imul(al9, bl5);
26333 mid = Math.imul(al9, bh5);
26334 mid = (mid + Math.imul(ah9, bl5)) | 0;
26335 hi = Math.imul(ah9, bh5);
26336 lo = (lo + Math.imul(al8, bl6)) | 0;
26337 mid = (mid + Math.imul(al8, bh6)) | 0;
26338 mid = (mid + Math.imul(ah8, bl6)) | 0;
26339 hi = (hi + Math.imul(ah8, bh6)) | 0;
26340 lo = (lo + Math.imul(al7, bl7)) | 0;
26341 mid = (mid + Math.imul(al7, bh7)) | 0;
26342 mid = (mid + Math.imul(ah7, bl7)) | 0;
26343 hi = (hi + Math.imul(ah7, bh7)) | 0;
26344 lo = (lo + Math.imul(al6, bl8)) | 0;
26345 mid = (mid + Math.imul(al6, bh8)) | 0;
26346 mid = (mid + Math.imul(ah6, bl8)) | 0;
26347 hi = (hi + Math.imul(ah6, bh8)) | 0;
26348 lo = (lo + Math.imul(al5, bl9)) | 0;
26349 mid = (mid + Math.imul(al5, bh9)) | 0;
26350 mid = (mid + Math.imul(ah5, bl9)) | 0;
26351 hi = (hi + Math.imul(ah5, bh9)) | 0;
26352 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26353 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
26354 w14 &= 0x3ffffff;
26355 /* k = 15 */
26356 lo = Math.imul(al9, bl6);
26357 mid = Math.imul(al9, bh6);
26358 mid = (mid + Math.imul(ah9, bl6)) | 0;
26359 hi = Math.imul(ah9, bh6);
26360 lo = (lo + Math.imul(al8, bl7)) | 0;
26361 mid = (mid + Math.imul(al8, bh7)) | 0;
26362 mid = (mid + Math.imul(ah8, bl7)) | 0;
26363 hi = (hi + Math.imul(ah8, bh7)) | 0;
26364 lo = (lo + Math.imul(al7, bl8)) | 0;
26365 mid = (mid + Math.imul(al7, bh8)) | 0;
26366 mid = (mid + Math.imul(ah7, bl8)) | 0;
26367 hi = (hi + Math.imul(ah7, bh8)) | 0;
26368 lo = (lo + Math.imul(al6, bl9)) | 0;
26369 mid = (mid + Math.imul(al6, bh9)) | 0;
26370 mid = (mid + Math.imul(ah6, bl9)) | 0;
26371 hi = (hi + Math.imul(ah6, bh9)) | 0;
26372 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26373 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
26374 w15 &= 0x3ffffff;
26375 /* k = 16 */
26376 lo = Math.imul(al9, bl7);
26377 mid = Math.imul(al9, bh7);
26378 mid = (mid + Math.imul(ah9, bl7)) | 0;
26379 hi = Math.imul(ah9, bh7);
26380 lo = (lo + Math.imul(al8, bl8)) | 0;
26381 mid = (mid + Math.imul(al8, bh8)) | 0;
26382 mid = (mid + Math.imul(ah8, bl8)) | 0;
26383 hi = (hi + Math.imul(ah8, bh8)) | 0;
26384 lo = (lo + Math.imul(al7, bl9)) | 0;
26385 mid = (mid + Math.imul(al7, bh9)) | 0;
26386 mid = (mid + Math.imul(ah7, bl9)) | 0;
26387 hi = (hi + Math.imul(ah7, bh9)) | 0;
26388 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26389 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
26390 w16 &= 0x3ffffff;
26391 /* k = 17 */
26392 lo = Math.imul(al9, bl8);
26393 mid = Math.imul(al9, bh8);
26394 mid = (mid + Math.imul(ah9, bl8)) | 0;
26395 hi = Math.imul(ah9, bh8);
26396 lo = (lo + Math.imul(al8, bl9)) | 0;
26397 mid = (mid + Math.imul(al8, bh9)) | 0;
26398 mid = (mid + Math.imul(ah8, bl9)) | 0;
26399 hi = (hi + Math.imul(ah8, bh9)) | 0;
26400 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26401 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
26402 w17 &= 0x3ffffff;
26403 /* k = 18 */
26404 lo = Math.imul(al9, bl9);
26405 mid = Math.imul(al9, bh9);
26406 mid = (mid + Math.imul(ah9, bl9)) | 0;
26407 hi = Math.imul(ah9, bh9);
26408 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
26409 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
26410 w18 &= 0x3ffffff;
26411 o[0] = w0;
26412 o[1] = w1;
26413 o[2] = w2;
26414 o[3] = w3;
26415 o[4] = w4;
26416 o[5] = w5;
26417 o[6] = w6;
26418 o[7] = w7;
26419 o[8] = w8;
26420 o[9] = w9;
26421 o[10] = w10;
26422 o[11] = w11;
26423 o[12] = w12;
26424 o[13] = w13;
26425 o[14] = w14;
26426 o[15] = w15;
26427 o[16] = w16;
26428 o[17] = w17;
26429 o[18] = w18;
26430 if (c !== 0) {
26431 o[19] = c;
26432 out.length++;
26433 }
26434 return out;
26435 };
26436
26437 // Polyfill comb
26438 if (!Math.imul) {
26439 comb10MulTo = smallMulTo;
26440 }
26441
26442 function bigMulTo (self, num, out) {
26443 out.negative = num.negative ^ self.negative;
26444 out.length = self.length + num.length;
26445
26446 var carry = 0;
26447 var hncarry = 0;
26448 for (var k = 0; k < out.length - 1; k++) {
26449 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
26450 // note that ncarry could be >= 0x3ffffff
26451 var ncarry = hncarry;
26452 hncarry = 0;
26453 var rword = carry & 0x3ffffff;
26454 var maxJ = Math.min(k, num.length - 1);
26455 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
26456 var i = k - j;
26457 var a = self.words[i] | 0;
26458 var b = num.words[j] | 0;
26459 var r = a * b;
26460
26461 var lo = r & 0x3ffffff;
26462 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
26463 lo = (lo + rword) | 0;
26464 rword = lo & 0x3ffffff;
26465 ncarry = (ncarry + (lo >>> 26)) | 0;
26466
26467 hncarry += ncarry >>> 26;
26468 ncarry &= 0x3ffffff;
26469 }
26470 out.words[k] = rword;
26471 carry = ncarry;
26472 ncarry = hncarry;
26473 }
26474 if (carry !== 0) {
26475 out.words[k] = carry;
26476 } else {
26477 out.length--;
26478 }
26479
26480 return out.strip();
26481 }
26482
26483 function jumboMulTo (self, num, out) {
26484 var fftm = new FFTM();
26485 return fftm.mulp(self, num, out);
26486 }
26487
26488 BN.prototype.mulTo = function mulTo (num, out) {
26489 var res;
26490 var len = this.length + num.length;
26491 if (this.length === 10 && num.length === 10) {
26492 res = comb10MulTo(this, num, out);
26493 } else if (len < 63) {
26494 res = smallMulTo(this, num, out);
26495 } else if (len < 1024) {
26496 res = bigMulTo(this, num, out);
26497 } else {
26498 res = jumboMulTo(this, num, out);
26499 }
26500
26501 return res;
26502 };
26503
26504 // Cooley-Tukey algorithm for FFT
26505 // slightly revisited to rely on looping instead of recursion
26506
26507 function FFTM (x, y) {
26508 this.x = x;
26509 this.y = y;
26510 }
26511
26512 FFTM.prototype.makeRBT = function makeRBT (N) {
26513 var t = new Array(N);
26514 var l = BN.prototype._countBits(N) - 1;
26515 for (var i = 0; i < N; i++) {
26516 t[i] = this.revBin(i, l, N);
26517 }
26518
26519 return t;
26520 };
26521
26522 // Returns binary-reversed representation of `x`
26523 FFTM.prototype.revBin = function revBin (x, l, N) {
26524 if (x === 0 || x === N - 1) return x;
26525
26526 var rb = 0;
26527 for (var i = 0; i < l; i++) {
26528 rb |= (x & 1) << (l - i - 1);
26529 x >>= 1;
26530 }
26531
26532 return rb;
26533 };
26534
26535 // Performs "tweedling" phase, therefore 'emulating'
26536 // behaviour of the recursive algorithm
26537 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
26538 for (var i = 0; i < N; i++) {
26539 rtws[i] = rws[rbt[i]];
26540 itws[i] = iws[rbt[i]];
26541 }
26542 };
26543
26544 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
26545 this.permute(rbt, rws, iws, rtws, itws, N);
26546
26547 for (var s = 1; s < N; s <<= 1) {
26548 var l = s << 1;
26549
26550 var rtwdf = Math.cos(2 * Math.PI / l);
26551 var itwdf = Math.sin(2 * Math.PI / l);
26552
26553 for (var p = 0; p < N; p += l) {
26554 var rtwdf_ = rtwdf;
26555 var itwdf_ = itwdf;
26556
26557 for (var j = 0; j < s; j++) {
26558 var re = rtws[p + j];
26559 var ie = itws[p + j];
26560
26561 var ro = rtws[p + j + s];
26562 var io = itws[p + j + s];
26563
26564 var rx = rtwdf_ * ro - itwdf_ * io;
26565
26566 io = rtwdf_ * io + itwdf_ * ro;
26567 ro = rx;
26568
26569 rtws[p + j] = re + ro;
26570 itws[p + j] = ie + io;
26571
26572 rtws[p + j + s] = re - ro;
26573 itws[p + j + s] = ie - io;
26574
26575 /* jshint maxdepth : false */
26576 if (j !== l) {
26577 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
26578
26579 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
26580 rtwdf_ = rx;
26581 }
26582 }
26583 }
26584 }
26585 };
26586
26587 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
26588 var N = Math.max(m, n) | 1;
26589 var odd = N & 1;
26590 var i = 0;
26591 for (N = N / 2 | 0; N; N = N >>> 1) {
26592 i++;
26593 }
26594
26595 return 1 << i + 1 + odd;
26596 };
26597
26598 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
26599 if (N <= 1) return;
26600
26601 for (var i = 0; i < N / 2; i++) {
26602 var t = rws[i];
26603
26604 rws[i] = rws[N - i - 1];
26605 rws[N - i - 1] = t;
26606
26607 t = iws[i];
26608
26609 iws[i] = -iws[N - i - 1];
26610 iws[N - i - 1] = -t;
26611 }
26612 };
26613
26614 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
26615 var carry = 0;
26616 for (var i = 0; i < N / 2; i++) {
26617 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
26618 Math.round(ws[2 * i] / N) +
26619 carry;
26620
26621 ws[i] = w & 0x3ffffff;
26622
26623 if (w < 0x4000000) {
26624 carry = 0;
26625 } else {
26626 carry = w / 0x4000000 | 0;
26627 }
26628 }
26629
26630 return ws;
26631 };
26632
26633 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
26634 var carry = 0;
26635 for (var i = 0; i < len; i++) {
26636 carry = carry + (ws[i] | 0);
26637
26638 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
26639 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
26640 }
26641
26642 // Pad with zeroes
26643 for (i = 2 * len; i < N; ++i) {
26644 rws[i] = 0;
26645 }
26646
26647 assert(carry === 0);
26648 assert((carry & ~0x1fff) === 0);
26649 };
26650
26651 FFTM.prototype.stub = function stub (N) {
26652 var ph = new Array(N);
26653 for (var i = 0; i < N; i++) {
26654 ph[i] = 0;
26655 }
26656
26657 return ph;
26658 };
26659
26660 FFTM.prototype.mulp = function mulp (x, y, out) {
26661 var N = 2 * this.guessLen13b(x.length, y.length);
26662
26663 var rbt = this.makeRBT(N);
26664
26665 var _ = this.stub(N);
26666
26667 var rws = new Array(N);
26668 var rwst = new Array(N);
26669 var iwst = new Array(N);
26670
26671 var nrws = new Array(N);
26672 var nrwst = new Array(N);
26673 var niwst = new Array(N);
26674
26675 var rmws = out.words;
26676 rmws.length = N;
26677
26678 this.convert13b(x.words, x.length, rws, N);
26679 this.convert13b(y.words, y.length, nrws, N);
26680
26681 this.transform(rws, _, rwst, iwst, N, rbt);
26682 this.transform(nrws, _, nrwst, niwst, N, rbt);
26683
26684 for (var i = 0; i < N; i++) {
26685 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
26686 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
26687 rwst[i] = rx;
26688 }
26689
26690 this.conjugate(rwst, iwst, N);
26691 this.transform(rwst, iwst, rmws, _, N, rbt);
26692 this.conjugate(rmws, _, N);
26693 this.normalize13b(rmws, N);
26694
26695 out.negative = x.negative ^ y.negative;
26696 out.length = x.length + y.length;
26697 return out.strip();
26698 };
26699
26700 // Multiply `this` by `num`
26701 BN.prototype.mul = function mul (num) {
26702 var out = new BN(null);
26703 out.words = new Array(this.length + num.length);
26704 return this.mulTo(num, out);
26705 };
26706
26707 // Multiply employing FFT
26708 BN.prototype.mulf = function mulf (num) {
26709 var out = new BN(null);
26710 out.words = new Array(this.length + num.length);
26711 return jumboMulTo(this, num, out);
26712 };
26713
26714 // In-place Multiplication
26715 BN.prototype.imul = function imul (num) {
26716 return this.clone().mulTo(num, this);
26717 };
26718
26719 BN.prototype.imuln = function imuln (num) {
26720 assert(typeof num === 'number');
26721 assert(num < 0x4000000);
26722
26723 // Carry
26724 var carry = 0;
26725 for (var i = 0; i < this.length; i++) {
26726 var w = (this.words[i] | 0) * num;
26727 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
26728 carry >>= 26;
26729 carry += (w / 0x4000000) | 0;
26730 // NOTE: lo is 27bit maximum
26731 carry += lo >>> 26;
26732 this.words[i] = lo & 0x3ffffff;
26733 }
26734
26735 if (carry !== 0) {
26736 this.words[i] = carry;
26737 this.length++;
26738 }
26739
26740 return this;
26741 };
26742
26743 BN.prototype.muln = function muln (num) {
26744 return this.clone().imuln(num);
26745 };
26746
26747 // `this` * `this`
26748 BN.prototype.sqr = function sqr () {
26749 return this.mul(this);
26750 };
26751
26752 // `this` * `this` in-place
26753 BN.prototype.isqr = function isqr () {
26754 return this.imul(this.clone());
26755 };
26756
26757 // Math.pow(`this`, `num`)
26758 BN.prototype.pow = function pow (num) {
26759 var w = toBitArray(num);
26760 if (w.length === 0) return new BN(1);
26761
26762 // Skip leading zeroes
26763 var res = this;
26764 for (var i = 0; i < w.length; i++, res = res.sqr()) {
26765 if (w[i] !== 0) break;
26766 }
26767
26768 if (++i < w.length) {
26769 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
26770 if (w[i] === 0) continue;
26771
26772 res = res.mul(q);
26773 }
26774 }
26775
26776 return res;
26777 };
26778
26779 // Shift-left in-place
26780 BN.prototype.iushln = function iushln (bits) {
26781 assert(typeof bits === 'number' && bits >= 0);
26782 var r = bits % 26;
26783 var s = (bits - r) / 26;
26784 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
26785 var i;
26786
26787 if (r !== 0) {
26788 var carry = 0;
26789
26790 for (i = 0; i < this.length; i++) {
26791 var newCarry = this.words[i] & carryMask;
26792 var c = ((this.words[i] | 0) - newCarry) << r;
26793 this.words[i] = c | carry;
26794 carry = newCarry >>> (26 - r);
26795 }
26796
26797 if (carry) {
26798 this.words[i] = carry;
26799 this.length++;
26800 }
26801 }
26802
26803 if (s !== 0) {
26804 for (i = this.length - 1; i >= 0; i--) {
26805 this.words[i + s] = this.words[i];
26806 }
26807
26808 for (i = 0; i < s; i++) {
26809 this.words[i] = 0;
26810 }
26811
26812 this.length += s;
26813 }
26814
26815 return this.strip();
26816 };
26817
26818 BN.prototype.ishln = function ishln (bits) {
26819 // TODO(indutny): implement me
26820 assert(this.negative === 0);
26821 return this.iushln(bits);
26822 };
26823
26824 // Shift-right in-place
26825 // NOTE: `hint` is a lowest bit before trailing zeroes
26826 // NOTE: if `extended` is present - it will be filled with destroyed bits
26827 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
26828 assert(typeof bits === 'number' && bits >= 0);
26829 var h;
26830 if (hint) {
26831 h = (hint - (hint % 26)) / 26;
26832 } else {
26833 h = 0;
26834 }
26835
26836 var r = bits % 26;
26837 var s = Math.min((bits - r) / 26, this.length);
26838 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
26839 var maskedWords = extended;
26840
26841 h -= s;
26842 h = Math.max(0, h);
26843
26844 // Extended mode, copy masked part
26845 if (maskedWords) {
26846 for (var i = 0; i < s; i++) {
26847 maskedWords.words[i] = this.words[i];
26848 }
26849 maskedWords.length = s;
26850 }
26851
26852 if (s === 0) {
26853 // No-op, we should not move anything at all
26854 } else if (this.length > s) {
26855 this.length -= s;
26856 for (i = 0; i < this.length; i++) {
26857 this.words[i] = this.words[i + s];
26858 }
26859 } else {
26860 this.words[0] = 0;
26861 this.length = 1;
26862 }
26863
26864 var carry = 0;
26865 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
26866 var word = this.words[i] | 0;
26867 this.words[i] = (carry << (26 - r)) | (word >>> r);
26868 carry = word & mask;
26869 }
26870
26871 // Push carried bits as a mask
26872 if (maskedWords && carry !== 0) {
26873 maskedWords.words[maskedWords.length++] = carry;
26874 }
26875
26876 if (this.length === 0) {
26877 this.words[0] = 0;
26878 this.length = 1;
26879 }
26880
26881 return this.strip();
26882 };
26883
26884 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
26885 // TODO(indutny): implement me
26886 assert(this.negative === 0);
26887 return this.iushrn(bits, hint, extended);
26888 };
26889
26890 // Shift-left
26891 BN.prototype.shln = function shln (bits) {
26892 return this.clone().ishln(bits);
26893 };
26894
26895 BN.prototype.ushln = function ushln (bits) {
26896 return this.clone().iushln(bits);
26897 };
26898
26899 // Shift-right
26900 BN.prototype.shrn = function shrn (bits) {
26901 return this.clone().ishrn(bits);
26902 };
26903
26904 BN.prototype.ushrn = function ushrn (bits) {
26905 return this.clone().iushrn(bits);
26906 };
26907
26908 // Test if n bit is set
26909 BN.prototype.testn = function testn (bit) {
26910 assert(typeof bit === 'number' && bit >= 0);
26911 var r = bit % 26;
26912 var s = (bit - r) / 26;
26913 var q = 1 << r;
26914
26915 // Fast case: bit is much higher than all existing words
26916 if (this.length <= s) return false;
26917
26918 // Check bit and return
26919 var w = this.words[s];
26920
26921 return !!(w & q);
26922 };
26923
26924 // Return only lowers bits of number (in-place)
26925 BN.prototype.imaskn = function imaskn (bits) {
26926 assert(typeof bits === 'number' && bits >= 0);
26927 var r = bits % 26;
26928 var s = (bits - r) / 26;
26929
26930 assert(this.negative === 0, 'imaskn works only with positive numbers');
26931
26932 if (this.length <= s) {
26933 return this;
26934 }
26935
26936 if (r !== 0) {
26937 s++;
26938 }
26939 this.length = Math.min(s, this.length);
26940
26941 if (r !== 0) {
26942 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
26943 this.words[this.length - 1] &= mask;
26944 }
26945
26946 return this.strip();
26947 };
26948
26949 // Return only lowers bits of number
26950 BN.prototype.maskn = function maskn (bits) {
26951 return this.clone().imaskn(bits);
26952 };
26953
26954 // Add plain number `num` to `this`
26955 BN.prototype.iaddn = function iaddn (num) {
26956 assert(typeof num === 'number');
26957 assert(num < 0x4000000);
26958 if (num < 0) return this.isubn(-num);
26959
26960 // Possible sign change
26961 if (this.negative !== 0) {
26962 if (this.length === 1 && (this.words[0] | 0) < num) {
26963 this.words[0] = num - (this.words[0] | 0);
26964 this.negative = 0;
26965 return this;
26966 }
26967
26968 this.negative = 0;
26969 this.isubn(num);
26970 this.negative = 1;
26971 return this;
26972 }
26973
26974 // Add without checks
26975 return this._iaddn(num);
26976 };
26977
26978 BN.prototype._iaddn = function _iaddn (num) {
26979 this.words[0] += num;
26980
26981 // Carry
26982 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
26983 this.words[i] -= 0x4000000;
26984 if (i === this.length - 1) {
26985 this.words[i + 1] = 1;
26986 } else {
26987 this.words[i + 1]++;
26988 }
26989 }
26990 this.length = Math.max(this.length, i + 1);
26991
26992 return this;
26993 };
26994
26995 // Subtract plain number `num` from `this`
26996 BN.prototype.isubn = function isubn (num) {
26997 assert(typeof num === 'number');
26998 assert(num < 0x4000000);
26999 if (num < 0) return this.iaddn(-num);
27000
27001 if (this.negative !== 0) {
27002 this.negative = 0;
27003 this.iaddn(num);
27004 this.negative = 1;
27005 return this;
27006 }
27007
27008 this.words[0] -= num;
27009
27010 if (this.length === 1 && this.words[0] < 0) {
27011 this.words[0] = -this.words[0];
27012 this.negative = 1;
27013 } else {
27014 // Carry
27015 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
27016 this.words[i] += 0x4000000;
27017 this.words[i + 1] -= 1;
27018 }
27019 }
27020
27021 return this.strip();
27022 };
27023
27024 BN.prototype.addn = function addn (num) {
27025 return this.clone().iaddn(num);
27026 };
27027
27028 BN.prototype.subn = function subn (num) {
27029 return this.clone().isubn(num);
27030 };
27031
27032 BN.prototype.iabs = function iabs () {
27033 this.negative = 0;
27034
27035 return this;
27036 };
27037
27038 BN.prototype.abs = function abs () {
27039 return this.clone().iabs();
27040 };
27041
27042 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
27043 var len = num.length + shift;
27044 var i;
27045
27046 this._expand(len);
27047
27048 var w;
27049 var carry = 0;
27050 for (i = 0; i < num.length; i++) {
27051 w = (this.words[i + shift] | 0) + carry;
27052 var right = (num.words[i] | 0) * mul;
27053 w -= right & 0x3ffffff;
27054 carry = (w >> 26) - ((right / 0x4000000) | 0);
27055 this.words[i + shift] = w & 0x3ffffff;
27056 }
27057 for (; i < this.length - shift; i++) {
27058 w = (this.words[i + shift] | 0) + carry;
27059 carry = w >> 26;
27060 this.words[i + shift] = w & 0x3ffffff;
27061 }
27062
27063 if (carry === 0) return this.strip();
27064
27065 // Subtraction overflow
27066 assert(carry === -1);
27067 carry = 0;
27068 for (i = 0; i < this.length; i++) {
27069 w = -(this.words[i] | 0) + carry;
27070 carry = w >> 26;
27071 this.words[i] = w & 0x3ffffff;
27072 }
27073 this.negative = 1;
27074
27075 return this.strip();
27076 };
27077
27078 BN.prototype._wordDiv = function _wordDiv (num, mode) {
27079 var shift = this.length - num.length;
27080
27081 var a = this.clone();
27082 var b = num;
27083
27084 // Normalize
27085 var bhi = b.words[b.length - 1] | 0;
27086 var bhiBits = this._countBits(bhi);
27087 shift = 26 - bhiBits;
27088 if (shift !== 0) {
27089 b = b.ushln(shift);
27090 a.iushln(shift);
27091 bhi = b.words[b.length - 1] | 0;
27092 }
27093
27094 // Initialize quotient
27095 var m = a.length - b.length;
27096 var q;
27097
27098 if (mode !== 'mod') {
27099 q = new BN(null);
27100 q.length = m + 1;
27101 q.words = new Array(q.length);
27102 for (var i = 0; i < q.length; i++) {
27103 q.words[i] = 0;
27104 }
27105 }
27106
27107 var diff = a.clone()._ishlnsubmul(b, 1, m);
27108 if (diff.negative === 0) {
27109 a = diff;
27110 if (q) {
27111 q.words[m] = 1;
27112 }
27113 }
27114
27115 for (var j = m - 1; j >= 0; j--) {
27116 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
27117 (a.words[b.length + j - 1] | 0);
27118
27119 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
27120 // (0x7ffffff)
27121 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
27122
27123 a._ishlnsubmul(b, qj, j);
27124 while (a.negative !== 0) {
27125 qj--;
27126 a.negative = 0;
27127 a._ishlnsubmul(b, 1, j);
27128 if (!a.isZero()) {
27129 a.negative ^= 1;
27130 }
27131 }
27132 if (q) {
27133 q.words[j] = qj;
27134 }
27135 }
27136 if (q) {
27137 q.strip();
27138 }
27139 a.strip();
27140
27141 // Denormalize
27142 if (mode !== 'div' && shift !== 0) {
27143 a.iushrn(shift);
27144 }
27145
27146 return {
27147 div: q || null,
27148 mod: a
27149 };
27150 };
27151
27152 // NOTE: 1) `mode` can be set to `mod` to request mod only,
27153 // to `div` to request div only, or be absent to
27154 // request both div & mod
27155 // 2) `positive` is true if unsigned mod is requested
27156 BN.prototype.divmod = function divmod (num, mode, positive) {
27157 assert(!num.isZero());
27158
27159 if (this.isZero()) {
27160 return {
27161 div: new BN(0),
27162 mod: new BN(0)
27163 };
27164 }
27165
27166 var div, mod, res;
27167 if (this.negative !== 0 && num.negative === 0) {
27168 res = this.neg().divmod(num, mode);
27169
27170 if (mode !== 'mod') {
27171 div = res.div.neg();
27172 }
27173
27174 if (mode !== 'div') {
27175 mod = res.mod.neg();
27176 if (positive && mod.negative !== 0) {
27177 mod.iadd(num);
27178 }
27179 }
27180
27181 return {
27182 div: div,
27183 mod: mod
27184 };
27185 }
27186
27187 if (this.negative === 0 && num.negative !== 0) {
27188 res = this.divmod(num.neg(), mode);
27189
27190 if (mode !== 'mod') {
27191 div = res.div.neg();
27192 }
27193
27194 return {
27195 div: div,
27196 mod: res.mod
27197 };
27198 }
27199
27200 if ((this.negative & num.negative) !== 0) {
27201 res = this.neg().divmod(num.neg(), mode);
27202
27203 if (mode !== 'div') {
27204 mod = res.mod.neg();
27205 if (positive && mod.negative !== 0) {
27206 mod.isub(num);
27207 }
27208 }
27209
27210 return {
27211 div: res.div,
27212 mod: mod
27213 };
27214 }
27215
27216 // Both numbers are positive at this point
27217
27218 // Strip both numbers to approximate shift value
27219 if (num.length > this.length || this.cmp(num) < 0) {
27220 return {
27221 div: new BN(0),
27222 mod: this
27223 };
27224 }
27225
27226 // Very short reduction
27227 if (num.length === 1) {
27228 if (mode === 'div') {
27229 return {
27230 div: this.divn(num.words[0]),
27231 mod: null
27232 };
27233 }
27234
27235 if (mode === 'mod') {
27236 return {
27237 div: null,
27238 mod: new BN(this.modn(num.words[0]))
27239 };
27240 }
27241
27242 return {
27243 div: this.divn(num.words[0]),
27244 mod: new BN(this.modn(num.words[0]))
27245 };
27246 }
27247
27248 return this._wordDiv(num, mode);
27249 };
27250
27251 // Find `this` / `num`
27252 BN.prototype.div = function div (num) {
27253 return this.divmod(num, 'div', false).div;
27254 };
27255
27256 // Find `this` % `num`
27257 BN.prototype.mod = function mod (num) {
27258 return this.divmod(num, 'mod', false).mod;
27259 };
27260
27261 BN.prototype.umod = function umod (num) {
27262 return this.divmod(num, 'mod', true).mod;
27263 };
27264
27265 // Find Round(`this` / `num`)
27266 BN.prototype.divRound = function divRound (num) {
27267 var dm = this.divmod(num);
27268
27269 // Fast case - exact division
27270 if (dm.mod.isZero()) return dm.div;
27271
27272 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
27273
27274 var half = num.ushrn(1);
27275 var r2 = num.andln(1);
27276 var cmp = mod.cmp(half);
27277
27278 // Round down
27279 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
27280
27281 // Round up
27282 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
27283 };
27284
27285 BN.prototype.modn = function modn (num) {
27286 assert(num <= 0x3ffffff);
27287 var p = (1 << 26) % num;
27288
27289 var acc = 0;
27290 for (var i = this.length - 1; i >= 0; i--) {
27291 acc = (p * acc + (this.words[i] | 0)) % num;
27292 }
27293
27294 return acc;
27295 };
27296
27297 // In-place division by number
27298 BN.prototype.idivn = function idivn (num) {
27299 assert(num <= 0x3ffffff);
27300
27301 var carry = 0;
27302 for (var i = this.length - 1; i >= 0; i--) {
27303 var w = (this.words[i] | 0) + carry * 0x4000000;
27304 this.words[i] = (w / num) | 0;
27305 carry = w % num;
27306 }
27307
27308 return this.strip();
27309 };
27310
27311 BN.prototype.divn = function divn (num) {
27312 return this.clone().idivn(num);
27313 };
27314
27315 BN.prototype.egcd = function egcd (p) {
27316 assert(p.negative === 0);
27317 assert(!p.isZero());
27318
27319 var x = this;
27320 var y = p.clone();
27321
27322 if (x.negative !== 0) {
27323 x = x.umod(p);
27324 } else {
27325 x = x.clone();
27326 }
27327
27328 // A * x + B * y = x
27329 var A = new BN(1);
27330 var B = new BN(0);
27331
27332 // C * x + D * y = y
27333 var C = new BN(0);
27334 var D = new BN(1);
27335
27336 var g = 0;
27337
27338 while (x.isEven() && y.isEven()) {
27339 x.iushrn(1);
27340 y.iushrn(1);
27341 ++g;
27342 }
27343
27344 var yp = y.clone();
27345 var xp = x.clone();
27346
27347 while (!x.isZero()) {
27348 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
27349 if (i > 0) {
27350 x.iushrn(i);
27351 while (i-- > 0) {
27352 if (A.isOdd() || B.isOdd()) {
27353 A.iadd(yp);
27354 B.isub(xp);
27355 }
27356
27357 A.iushrn(1);
27358 B.iushrn(1);
27359 }
27360 }
27361
27362 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
27363 if (j > 0) {
27364 y.iushrn(j);
27365 while (j-- > 0) {
27366 if (C.isOdd() || D.isOdd()) {
27367 C.iadd(yp);
27368 D.isub(xp);
27369 }
27370
27371 C.iushrn(1);
27372 D.iushrn(1);
27373 }
27374 }
27375
27376 if (x.cmp(y) >= 0) {
27377 x.isub(y);
27378 A.isub(C);
27379 B.isub(D);
27380 } else {
27381 y.isub(x);
27382 C.isub(A);
27383 D.isub(B);
27384 }
27385 }
27386
27387 return {
27388 a: C,
27389 b: D,
27390 gcd: y.iushln(g)
27391 };
27392 };
27393
27394 // This is reduced incarnation of the binary EEA
27395 // above, designated to invert members of the
27396 // _prime_ fields F(p) at a maximal speed
27397 BN.prototype._invmp = function _invmp (p) {
27398 assert(p.negative === 0);
27399 assert(!p.isZero());
27400
27401 var a = this;
27402 var b = p.clone();
27403
27404 if (a.negative !== 0) {
27405 a = a.umod(p);
27406 } else {
27407 a = a.clone();
27408 }
27409
27410 var x1 = new BN(1);
27411 var x2 = new BN(0);
27412
27413 var delta = b.clone();
27414
27415 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
27416 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
27417 if (i > 0) {
27418 a.iushrn(i);
27419 while (i-- > 0) {
27420 if (x1.isOdd()) {
27421 x1.iadd(delta);
27422 }
27423
27424 x1.iushrn(1);
27425 }
27426 }
27427
27428 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
27429 if (j > 0) {
27430 b.iushrn(j);
27431 while (j-- > 0) {
27432 if (x2.isOdd()) {
27433 x2.iadd(delta);
27434 }
27435
27436 x2.iushrn(1);
27437 }
27438 }
27439
27440 if (a.cmp(b) >= 0) {
27441 a.isub(b);
27442 x1.isub(x2);
27443 } else {
27444 b.isub(a);
27445 x2.isub(x1);
27446 }
27447 }
27448
27449 var res;
27450 if (a.cmpn(1) === 0) {
27451 res = x1;
27452 } else {
27453 res = x2;
27454 }
27455
27456 if (res.cmpn(0) < 0) {
27457 res.iadd(p);
27458 }
27459
27460 return res;
27461 };
27462
27463 BN.prototype.gcd = function gcd (num) {
27464 if (this.isZero()) return num.abs();
27465 if (num.isZero()) return this.abs();
27466
27467 var a = this.clone();
27468 var b = num.clone();
27469 a.negative = 0;
27470 b.negative = 0;
27471
27472 // Remove common factor of two
27473 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
27474 a.iushrn(1);
27475 b.iushrn(1);
27476 }
27477
27478 do {
27479 while (a.isEven()) {
27480 a.iushrn(1);
27481 }
27482 while (b.isEven()) {
27483 b.iushrn(1);
27484 }
27485
27486 var r = a.cmp(b);
27487 if (r < 0) {
27488 // Swap `a` and `b` to make `a` always bigger than `b`
27489 var t = a;
27490 a = b;
27491 b = t;
27492 } else if (r === 0 || b.cmpn(1) === 0) {
27493 break;
27494 }
27495
27496 a.isub(b);
27497 } while (true);
27498
27499 return b.iushln(shift);
27500 };
27501
27502 // Invert number in the field F(num)
27503 BN.prototype.invm = function invm (num) {
27504 return this.egcd(num).a.umod(num);
27505 };
27506
27507 BN.prototype.isEven = function isEven () {
27508 return (this.words[0] & 1) === 0;
27509 };
27510
27511 BN.prototype.isOdd = function isOdd () {
27512 return (this.words[0] & 1) === 1;
27513 };
27514
27515 // And first word and num
27516 BN.prototype.andln = function andln (num) {
27517 return this.words[0] & num;
27518 };
27519
27520 // Increment at the bit position in-line
27521 BN.prototype.bincn = function bincn (bit) {
27522 assert(typeof bit === 'number');
27523 var r = bit % 26;
27524 var s = (bit - r) / 26;
27525 var q = 1 << r;
27526
27527 // Fast case: bit is much higher than all existing words
27528 if (this.length <= s) {
27529 this._expand(s + 1);
27530 this.words[s] |= q;
27531 return this;
27532 }
27533
27534 // Add bit and propagate, if needed
27535 var carry = q;
27536 for (var i = s; carry !== 0 && i < this.length; i++) {
27537 var w = this.words[i] | 0;
27538 w += carry;
27539 carry = w >>> 26;
27540 w &= 0x3ffffff;
27541 this.words[i] = w;
27542 }
27543 if (carry !== 0) {
27544 this.words[i] = carry;
27545 this.length++;
27546 }
27547 return this;
27548 };
27549
27550 BN.prototype.isZero = function isZero () {
27551 return this.length === 1 && this.words[0] === 0;
27552 };
27553
27554 BN.prototype.cmpn = function cmpn (num) {
27555 var negative = num < 0;
27556
27557 if (this.negative !== 0 && !negative) return -1;
27558 if (this.negative === 0 && negative) return 1;
27559
27560 this.strip();
27561
27562 var res;
27563 if (this.length > 1) {
27564 res = 1;
27565 } else {
27566 if (negative) {
27567 num = -num;
27568 }
27569
27570 assert(num <= 0x3ffffff, 'Number is too big');
27571
27572 var w = this.words[0] | 0;
27573 res = w === num ? 0 : w < num ? -1 : 1;
27574 }
27575 if (this.negative !== 0) return -res | 0;
27576 return res;
27577 };
27578
27579 // Compare two numbers and return:
27580 // 1 - if `this` > `num`
27581 // 0 - if `this` == `num`
27582 // -1 - if `this` < `num`
27583 BN.prototype.cmp = function cmp (num) {
27584 if (this.negative !== 0 && num.negative === 0) return -1;
27585 if (this.negative === 0 && num.negative !== 0) return 1;
27586
27587 var res = this.ucmp(num);
27588 if (this.negative !== 0) return -res | 0;
27589 return res;
27590 };
27591
27592 // Unsigned comparison
27593 BN.prototype.ucmp = function ucmp (num) {
27594 // At this point both numbers have the same sign
27595 if (this.length > num.length) return 1;
27596 if (this.length < num.length) return -1;
27597
27598 var res = 0;
27599 for (var i = this.length - 1; i >= 0; i--) {
27600 var a = this.words[i] | 0;
27601 var b = num.words[i] | 0;
27602
27603 if (a === b) continue;
27604 if (a < b) {
27605 res = -1;
27606 } else if (a > b) {
27607 res = 1;
27608 }
27609 break;
27610 }
27611 return res;
27612 };
27613
27614 BN.prototype.gtn = function gtn (num) {
27615 return this.cmpn(num) === 1;
27616 };
27617
27618 BN.prototype.gt = function gt (num) {
27619 return this.cmp(num) === 1;
27620 };
27621
27622 BN.prototype.gten = function gten (num) {
27623 return this.cmpn(num) >= 0;
27624 };
27625
27626 BN.prototype.gte = function gte (num) {
27627 return this.cmp(num) >= 0;
27628 };
27629
27630 BN.prototype.ltn = function ltn (num) {
27631 return this.cmpn(num) === -1;
27632 };
27633
27634 BN.prototype.lt = function lt (num) {
27635 return this.cmp(num) === -1;
27636 };
27637
27638 BN.prototype.lten = function lten (num) {
27639 return this.cmpn(num) <= 0;
27640 };
27641
27642 BN.prototype.lte = function lte (num) {
27643 return this.cmp(num) <= 0;
27644 };
27645
27646 BN.prototype.eqn = function eqn (num) {
27647 return this.cmpn(num) === 0;
27648 };
27649
27650 BN.prototype.eq = function eq (num) {
27651 return this.cmp(num) === 0;
27652 };
27653
27654 //
27655 // A reduce context, could be using montgomery or something better, depending
27656 // on the `m` itself.
27657 //
27658 BN.red = function red (num) {
27659 return new Red(num);
27660 };
27661
27662 BN.prototype.toRed = function toRed (ctx) {
27663 assert(!this.red, 'Already a number in reduction context');
27664 assert(this.negative === 0, 'red works only with positives');
27665 return ctx.convertTo(this)._forceRed(ctx);
27666 };
27667
27668 BN.prototype.fromRed = function fromRed () {
27669 assert(this.red, 'fromRed works only with numbers in reduction context');
27670 return this.red.convertFrom(this);
27671 };
27672
27673 BN.prototype._forceRed = function _forceRed (ctx) {
27674 this.red = ctx;
27675 return this;
27676 };
27677
27678 BN.prototype.forceRed = function forceRed (ctx) {
27679 assert(!this.red, 'Already a number in reduction context');
27680 return this._forceRed(ctx);
27681 };
27682
27683 BN.prototype.redAdd = function redAdd (num) {
27684 assert(this.red, 'redAdd works only with red numbers');
27685 return this.red.add(this, num);
27686 };
27687
27688 BN.prototype.redIAdd = function redIAdd (num) {
27689 assert(this.red, 'redIAdd works only with red numbers');
27690 return this.red.iadd(this, num);
27691 };
27692
27693 BN.prototype.redSub = function redSub (num) {
27694 assert(this.red, 'redSub works only with red numbers');
27695 return this.red.sub(this, num);
27696 };
27697
27698 BN.prototype.redISub = function redISub (num) {
27699 assert(this.red, 'redISub works only with red numbers');
27700 return this.red.isub(this, num);
27701 };
27702
27703 BN.prototype.redShl = function redShl (num) {
27704 assert(this.red, 'redShl works only with red numbers');
27705 return this.red.shl(this, num);
27706 };
27707
27708 BN.prototype.redMul = function redMul (num) {
27709 assert(this.red, 'redMul works only with red numbers');
27710 this.red._verify2(this, num);
27711 return this.red.mul(this, num);
27712 };
27713
27714 BN.prototype.redIMul = function redIMul (num) {
27715 assert(this.red, 'redMul works only with red numbers');
27716 this.red._verify2(this, num);
27717 return this.red.imul(this, num);
27718 };
27719
27720 BN.prototype.redSqr = function redSqr () {
27721 assert(this.red, 'redSqr works only with red numbers');
27722 this.red._verify1(this);
27723 return this.red.sqr(this);
27724 };
27725
27726 BN.prototype.redISqr = function redISqr () {
27727 assert(this.red, 'redISqr works only with red numbers');
27728 this.red._verify1(this);
27729 return this.red.isqr(this);
27730 };
27731
27732 // Square root over p
27733 BN.prototype.redSqrt = function redSqrt () {
27734 assert(this.red, 'redSqrt works only with red numbers');
27735 this.red._verify1(this);
27736 return this.red.sqrt(this);
27737 };
27738
27739 BN.prototype.redInvm = function redInvm () {
27740 assert(this.red, 'redInvm works only with red numbers');
27741 this.red._verify1(this);
27742 return this.red.invm(this);
27743 };
27744
27745 // Return negative clone of `this` % `red modulo`
27746 BN.prototype.redNeg = function redNeg () {
27747 assert(this.red, 'redNeg works only with red numbers');
27748 this.red._verify1(this);
27749 return this.red.neg(this);
27750 };
27751
27752 BN.prototype.redPow = function redPow (num) {
27753 assert(this.red && !num.red, 'redPow(normalNum)');
27754 this.red._verify1(this);
27755 return this.red.pow(this, num);
27756 };
27757
27758 // Prime numbers with efficient reduction
27759 var primes = {
27760 k256: null,
27761 p224: null,
27762 p192: null,
27763 p25519: null
27764 };
27765
27766 // Pseudo-Mersenne prime
27767 function MPrime (name, p) {
27768 // P = 2 ^ N - K
27769 this.name = name;
27770 this.p = new BN(p, 16);
27771 this.n = this.p.bitLength();
27772 this.k = new BN(1).iushln(this.n).isub(this.p);
27773
27774 this.tmp = this._tmp();
27775 }
27776
27777 MPrime.prototype._tmp = function _tmp () {
27778 var tmp = new BN(null);
27779 tmp.words = new Array(Math.ceil(this.n / 13));
27780 return tmp;
27781 };
27782
27783 MPrime.prototype.ireduce = function ireduce (num) {
27784 // Assumes that `num` is less than `P^2`
27785 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
27786 var r = num;
27787 var rlen;
27788
27789 do {
27790 this.split(r, this.tmp);
27791 r = this.imulK(r);
27792 r = r.iadd(this.tmp);
27793 rlen = r.bitLength();
27794 } while (rlen > this.n);
27795
27796 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
27797 if (cmp === 0) {
27798 r.words[0] = 0;
27799 r.length = 1;
27800 } else if (cmp > 0) {
27801 r.isub(this.p);
27802 } else {
27803 r.strip();
27804 }
27805
27806 return r;
27807 };
27808
27809 MPrime.prototype.split = function split (input, out) {
27810 input.iushrn(this.n, 0, out);
27811 };
27812
27813 MPrime.prototype.imulK = function imulK (num) {
27814 return num.imul(this.k);
27815 };
27816
27817 function K256 () {
27818 MPrime.call(
27819 this,
27820 'k256',
27821 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
27822 }
27823 inherits(K256, MPrime);
27824
27825 K256.prototype.split = function split (input, output) {
27826 // 256 = 9 * 26 + 22
27827 var mask = 0x3fffff;
27828
27829 var outLen = Math.min(input.length, 9);
27830 for (var i = 0; i < outLen; i++) {
27831 output.words[i] = input.words[i];
27832 }
27833 output.length = outLen;
27834
27835 if (input.length <= 9) {
27836 input.words[0] = 0;
27837 input.length = 1;
27838 return;
27839 }
27840
27841 // Shift by 9 limbs
27842 var prev = input.words[9];
27843 output.words[output.length++] = prev & mask;
27844
27845 for (i = 10; i < input.length; i++) {
27846 var next = input.words[i] | 0;
27847 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
27848 prev = next;
27849 }
27850 prev >>>= 22;
27851 input.words[i - 10] = prev;
27852 if (prev === 0 && input.length > 10) {
27853 input.length -= 10;
27854 } else {
27855 input.length -= 9;
27856 }
27857 };
27858
27859 K256.prototype.imulK = function imulK (num) {
27860 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
27861 num.words[num.length] = 0;
27862 num.words[num.length + 1] = 0;
27863 num.length += 2;
27864
27865 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
27866 var lo = 0;
27867 for (var i = 0; i < num.length; i++) {
27868 var w = num.words[i] | 0;
27869 lo += w * 0x3d1;
27870 num.words[i] = lo & 0x3ffffff;
27871 lo = w * 0x40 + ((lo / 0x4000000) | 0);
27872 }
27873
27874 // Fast length reduction
27875 if (num.words[num.length - 1] === 0) {
27876 num.length--;
27877 if (num.words[num.length - 1] === 0) {
27878 num.length--;
27879 }
27880 }
27881 return num;
27882 };
27883
27884 function P224 () {
27885 MPrime.call(
27886 this,
27887 'p224',
27888 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
27889 }
27890 inherits(P224, MPrime);
27891
27892 function P192 () {
27893 MPrime.call(
27894 this,
27895 'p192',
27896 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
27897 }
27898 inherits(P192, MPrime);
27899
27900 function P25519 () {
27901 // 2 ^ 255 - 19
27902 MPrime.call(
27903 this,
27904 '25519',
27905 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
27906 }
27907 inherits(P25519, MPrime);
27908
27909 P25519.prototype.imulK = function imulK (num) {
27910 // K = 0x13
27911 var carry = 0;
27912 for (var i = 0; i < num.length; i++) {
27913 var hi = (num.words[i] | 0) * 0x13 + carry;
27914 var lo = hi & 0x3ffffff;
27915 hi >>>= 26;
27916
27917 num.words[i] = lo;
27918 carry = hi;
27919 }
27920 if (carry !== 0) {
27921 num.words[num.length++] = carry;
27922 }
27923 return num;
27924 };
27925
27926 // Exported mostly for testing purposes, use plain name instead
27927 BN._prime = function prime (name) {
27928 // Cached version of prime
27929 if (primes[name]) return primes[name];
27930
27931 var prime;
27932 if (name === 'k256') {
27933 prime = new K256();
27934 } else if (name === 'p224') {
27935 prime = new P224();
27936 } else if (name === 'p192') {
27937 prime = new P192();
27938 } else if (name === 'p25519') {
27939 prime = new P25519();
27940 } else {
27941 throw new Error('Unknown prime ' + name);
27942 }
27943 primes[name] = prime;
27944
27945 return prime;
27946 };
27947
27948 //
27949 // Base reduction engine
27950 //
27951 function Red (m) {
27952 if (typeof m === 'string') {
27953 var prime = BN._prime(m);
27954 this.m = prime.p;
27955 this.prime = prime;
27956 } else {
27957 assert(m.gtn(1), 'modulus must be greater than 1');
27958 this.m = m;
27959 this.prime = null;
27960 }
27961 }
27962
27963 Red.prototype._verify1 = function _verify1 (a) {
27964 assert(a.negative === 0, 'red works only with positives');
27965 assert(a.red, 'red works only with red numbers');
27966 };
27967
27968 Red.prototype._verify2 = function _verify2 (a, b) {
27969 assert((a.negative | b.negative) === 0, 'red works only with positives');
27970 assert(a.red && a.red === b.red,
27971 'red works only with red numbers');
27972 };
27973
27974 Red.prototype.imod = function imod (a) {
27975 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
27976 return a.umod(this.m)._forceRed(this);
27977 };
27978
27979 Red.prototype.neg = function neg (a) {
27980 if (a.isZero()) {
27981 return a.clone();
27982 }
27983
27984 return this.m.sub(a)._forceRed(this);
27985 };
27986
27987 Red.prototype.add = function add (a, b) {
27988 this._verify2(a, b);
27989
27990 var res = a.add(b);
27991 if (res.cmp(this.m) >= 0) {
27992 res.isub(this.m);
27993 }
27994 return res._forceRed(this);
27995 };
27996
27997 Red.prototype.iadd = function iadd (a, b) {
27998 this._verify2(a, b);
27999
28000 var res = a.iadd(b);
28001 if (res.cmp(this.m) >= 0) {
28002 res.isub(this.m);
28003 }
28004 return res;
28005 };
28006
28007 Red.prototype.sub = function sub (a, b) {
28008 this._verify2(a, b);
28009
28010 var res = a.sub(b);
28011 if (res.cmpn(0) < 0) {
28012 res.iadd(this.m);
28013 }
28014 return res._forceRed(this);
28015 };
28016
28017 Red.prototype.isub = function isub (a, b) {
28018 this._verify2(a, b);
28019
28020 var res = a.isub(b);
28021 if (res.cmpn(0) < 0) {
28022 res.iadd(this.m);
28023 }
28024 return res;
28025 };
28026
28027 Red.prototype.shl = function shl (a, num) {
28028 this._verify1(a);
28029 return this.imod(a.ushln(num));
28030 };
28031
28032 Red.prototype.imul = function imul (a, b) {
28033 this._verify2(a, b);
28034 return this.imod(a.imul(b));
28035 };
28036
28037 Red.prototype.mul = function mul (a, b) {
28038 this._verify2(a, b);
28039 return this.imod(a.mul(b));
28040 };
28041
28042 Red.prototype.isqr = function isqr (a) {
28043 return this.imul(a, a.clone());
28044 };
28045
28046 Red.prototype.sqr = function sqr (a) {
28047 return this.mul(a, a);
28048 };
28049
28050 Red.prototype.sqrt = function sqrt (a) {
28051 if (a.isZero()) return a.clone();
28052
28053 var mod3 = this.m.andln(3);
28054 assert(mod3 % 2 === 1);
28055
28056 // Fast case
28057 if (mod3 === 3) {
28058 var pow = this.m.add(new BN(1)).iushrn(2);
28059 return this.pow(a, pow);
28060 }
28061
28062 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
28063 //
28064 // Find Q and S, that Q * 2 ^ S = (P - 1)
28065 var q = this.m.subn(1);
28066 var s = 0;
28067 while (!q.isZero() && q.andln(1) === 0) {
28068 s++;
28069 q.iushrn(1);
28070 }
28071 assert(!q.isZero());
28072
28073 var one = new BN(1).toRed(this);
28074 var nOne = one.redNeg();
28075
28076 // Find quadratic non-residue
28077 // NOTE: Max is such because of generalized Riemann hypothesis.
28078 var lpow = this.m.subn(1).iushrn(1);
28079 var z = this.m.bitLength();
28080 z = new BN(2 * z * z).toRed(this);
28081
28082 while (this.pow(z, lpow).cmp(nOne) !== 0) {
28083 z.redIAdd(nOne);
28084 }
28085
28086 var c = this.pow(z, q);
28087 var r = this.pow(a, q.addn(1).iushrn(1));
28088 var t = this.pow(a, q);
28089 var m = s;
28090 while (t.cmp(one) !== 0) {
28091 var tmp = t;
28092 for (var i = 0; tmp.cmp(one) !== 0; i++) {
28093 tmp = tmp.redSqr();
28094 }
28095 assert(i < m);
28096 var b = this.pow(c, new BN(1).iushln(m - i - 1));
28097
28098 r = r.redMul(b);
28099 c = b.redSqr();
28100 t = t.redMul(c);
28101 m = i;
28102 }
28103
28104 return r;
28105 };
28106
28107 Red.prototype.invm = function invm (a) {
28108 var inv = a._invmp(this.m);
28109 if (inv.negative !== 0) {
28110 inv.negative = 0;
28111 return this.imod(inv).redNeg();
28112 } else {
28113 return this.imod(inv);
28114 }
28115 };
28116
28117 Red.prototype.pow = function pow (a, num) {
28118 if (num.isZero()) return new BN(1);
28119 if (num.cmpn(1) === 0) return a.clone();
28120
28121 var windowSize = 4;
28122 var wnd = new Array(1 << windowSize);
28123 wnd[0] = new BN(1).toRed(this);
28124 wnd[1] = a;
28125 for (var i = 2; i < wnd.length; i++) {
28126 wnd[i] = this.mul(wnd[i - 1], a);
28127 }
28128
28129 var res = wnd[0];
28130 var current = 0;
28131 var currentLen = 0;
28132 var start = num.bitLength() % 26;
28133 if (start === 0) {
28134 start = 26;
28135 }
28136
28137 for (i = num.length - 1; i >= 0; i--) {
28138 var word = num.words[i];
28139 for (var j = start - 1; j >= 0; j--) {
28140 var bit = (word >> j) & 1;
28141 if (res !== wnd[0]) {
28142 res = this.sqr(res);
28143 }
28144
28145 if (bit === 0 && current === 0) {
28146 currentLen = 0;
28147 continue;
28148 }
28149
28150 current <<= 1;
28151 current |= bit;
28152 currentLen++;
28153 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
28154
28155 res = this.mul(res, wnd[current]);
28156 currentLen = 0;
28157 current = 0;
28158 }
28159 start = 26;
28160 }
28161
28162 return res;
28163 };
28164
28165 Red.prototype.convertTo = function convertTo (num) {
28166 var r = num.umod(this.m);
28167
28168 return r === num ? r.clone() : r;
28169 };
28170
28171 Red.prototype.convertFrom = function convertFrom (num) {
28172 var res = num.clone();
28173 res.red = null;
28174 return res;
28175 };
28176
28177 //
28178 // Montgomery method engine
28179 //
28180
28181 BN.mont = function mont (num) {
28182 return new Mont(num);
28183 };
28184
28185 function Mont (m) {
28186 Red.call(this, m);
28187
28188 this.shift = this.m.bitLength();
28189 if (this.shift % 26 !== 0) {
28190 this.shift += 26 - (this.shift % 26);
28191 }
28192
28193 this.r = new BN(1).iushln(this.shift);
28194 this.r2 = this.imod(this.r.sqr());
28195 this.rinv = this.r._invmp(this.m);
28196
28197 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
28198 this.minv = this.minv.umod(this.r);
28199 this.minv = this.r.sub(this.minv);
28200 }
28201 inherits(Mont, Red);
28202
28203 Mont.prototype.convertTo = function convertTo (num) {
28204 return this.imod(num.ushln(this.shift));
28205 };
28206
28207 Mont.prototype.convertFrom = function convertFrom (num) {
28208 var r = this.imod(num.mul(this.rinv));
28209 r.red = null;
28210 return r;
28211 };
28212
28213 Mont.prototype.imul = function imul (a, b) {
28214 if (a.isZero() || b.isZero()) {
28215 a.words[0] = 0;
28216 a.length = 1;
28217 return a;
28218 }
28219
28220 var t = a.imul(b);
28221 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
28222 var u = t.isub(c).iushrn(this.shift);
28223 var res = u;
28224
28225 if (u.cmp(this.m) >= 0) {
28226 res = u.isub(this.m);
28227 } else if (u.cmpn(0) < 0) {
28228 res = u.iadd(this.m);
28229 }
28230
28231 return res._forceRed(this);
28232 };
28233
28234 Mont.prototype.mul = function mul (a, b) {
28235 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
28236
28237 var t = a.mul(b);
28238 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
28239 var u = t.isub(c).iushrn(this.shift);
28240 var res = u;
28241 if (u.cmp(this.m) >= 0) {
28242 res = u.isub(this.m);
28243 } else if (u.cmpn(0) < 0) {
28244 res = u.iadd(this.m);
28245 }
28246
28247 return res._forceRed(this);
28248 };
28249
28250 Mont.prototype.invm = function invm (a) {
28251 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
28252 var res = this.imod(a._invmp(this.m).mul(this.r2));
28253 return res._forceRed(this);
28254 };
28255 })(typeof module === 'undefined' || module, this);
28256
28257 },{}],34:[function(require,module,exports){
28258 var r;
28259
28260 module.exports = function rand(len) {
28261 if (!r)
28262 r = new Rand(null);
28263
28264 return r.generate(len);
28265 };
28266
28267 function Rand(rand) {
28268 this.rand = rand;
28269 }
28270 module.exports.Rand = Rand;
28271
28272 Rand.prototype.generate = function generate(len) {
28273 return this._rand(len);
28274 };
28275
28276 if (typeof self === 'object') {
28277 if (self.crypto && self.crypto.getRandomValues) {
28278 // Modern browsers
28279 Rand.prototype._rand = function _rand(n) {
28280 var arr = new Uint8Array(n);
28281 self.crypto.getRandomValues(arr);
28282 return arr;
28283 };
28284 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
28285 // IE
28286 Rand.prototype._rand = function _rand(n) {
28287 var arr = new Uint8Array(n);
28288 self.msCrypto.getRandomValues(arr);
28289 return arr;
28290 };
28291 } else {
28292 // Old junk
28293 Rand.prototype._rand = function() {
28294 throw new Error('Not implemented yet');
28295 };
28296 }
28297 } else {
28298 // Node.js or Web worker with no crypto support
28299 try {
28300 var crypto = require('crypto');
28301
28302 Rand.prototype._rand = function _rand(n) {
28303 return crypto.randomBytes(n);
28304 };
28305 } catch (e) {
28306 // Emulate crypto API using randy
28307 Rand.prototype._rand = function _rand(n) {
28308 var res = new Uint8Array(n);
28309 for (var i = 0; i < res.length; i++)
28310 res[i] = this.rand.getByte();
28311 return res;
28312 };
28313 }
28314 }
28315
28316 },{"crypto":3}],35:[function(require,module,exports){
28317 (function (Buffer){
28318 var Transform = require('stream').Transform
28319 var inherits = require('inherits')
28320 var StringDecoder = require('string_decoder').StringDecoder
28321 module.exports = CipherBase
28322 inherits(CipherBase, Transform)
28323 function CipherBase (hashMode) {
28324 Transform.call(this)
28325 this.hashMode = typeof hashMode === 'string'
28326 if (this.hashMode) {
28327 this[hashMode] = this._finalOrDigest
28328 } else {
28329 this.final = this._finalOrDigest
28330 }
28331 this._decoder = null
28332 this._encoding = null
28333 }
28334 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
28335 if (typeof data === 'string') {
28336 data = new Buffer(data, inputEnc)
28337 }
28338 var outData = this._update(data)
28339 if (this.hashMode) {
28340 return this
28341 }
28342 if (outputEnc) {
28343 outData = this._toString(outData, outputEnc)
28344 }
28345 return outData
28346 }
28347
28348 CipherBase.prototype.setAutoPadding = function () {}
28349
28350 CipherBase.prototype.getAuthTag = function () {
28351 throw new Error('trying to get auth tag in unsupported state')
28352 }
28353
28354 CipherBase.prototype.setAuthTag = function () {
28355 throw new Error('trying to set auth tag in unsupported state')
28356 }
28357
28358 CipherBase.prototype.setAAD = function () {
28359 throw new Error('trying to set aad in unsupported state')
28360 }
28361
28362 CipherBase.prototype._transform = function (data, _, next) {
28363 var err
28364 try {
28365 if (this.hashMode) {
28366 this._update(data)
28367 } else {
28368 this.push(this._update(data))
28369 }
28370 } catch (e) {
28371 err = e
28372 } finally {
28373 next(err)
28374 }
28375 }
28376 CipherBase.prototype._flush = function (done) {
28377 var err
28378 try {
28379 this.push(this._final())
28380 } catch (e) {
28381 err = e
28382 } finally {
28383 done(err)
28384 }
28385 }
28386 CipherBase.prototype._finalOrDigest = function (outputEnc) {
28387 var outData = this._final() || new Buffer('')
28388 if (outputEnc) {
28389 outData = this._toString(outData, outputEnc, true)
28390 }
28391 return outData
28392 }
28393
28394 CipherBase.prototype._toString = function (value, enc, fin) {
28395 if (!this._decoder) {
28396 this._decoder = new StringDecoder(enc)
28397 this._encoding = enc
28398 }
28399 if (this._encoding !== enc) {
28400 throw new Error('can\'t switch encodings')
28401 }
28402 var out = this._decoder.write(value)
28403 if (fin) {
28404 out += this._decoder.end()
28405 }
28406 return out
28407 }
28408
28409 }).call(this,require("buffer").Buffer)
28410 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
28411 (function (Buffer){
28412 'use strict';
28413 var inherits = require('inherits')
28414 var md5 = require('./md5')
28415 var rmd160 = require('ripemd160')
28416 var sha = require('sha.js')
28417
28418 var Base = require('cipher-base')
28419
28420 function HashNoConstructor(hash) {
28421 Base.call(this, 'digest')
28422
28423 this._hash = hash
28424 this.buffers = []
28425 }
28426
28427 inherits(HashNoConstructor, Base)
28428
28429 HashNoConstructor.prototype._update = function (data) {
28430 this.buffers.push(data)
28431 }
28432
28433 HashNoConstructor.prototype._final = function () {
28434 var buf = Buffer.concat(this.buffers)
28435 var r = this._hash(buf)
28436 this.buffers = null
28437
28438 return r
28439 }
28440
28441 function Hash(hash) {
28442 Base.call(this, 'digest')
28443
28444 this._hash = hash
28445 }
28446
28447 inherits(Hash, Base)
28448
28449 Hash.prototype._update = function (data) {
28450 this._hash.update(data)
28451 }
28452
28453 Hash.prototype._final = function () {
28454 return this._hash.digest()
28455 }
28456
28457 module.exports = function createHash (alg) {
28458 alg = alg.toLowerCase()
28459 if ('md5' === alg) return new HashNoConstructor(md5)
28460 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
28461
28462 return new Hash(sha(alg))
28463 }
28464
28465 }).call(this,require("buffer").Buffer)
28466 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
28467 (function (Buffer){
28468 'use strict';
28469 var intSize = 4;
28470 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
28471 var chrsz = 8;
28472
28473 function toArray(buf, bigEndian) {
28474 if ((buf.length % intSize) !== 0) {
28475 var len = buf.length + (intSize - (buf.length % intSize));
28476 buf = Buffer.concat([buf, zeroBuffer], len);
28477 }
28478
28479 var arr = [];
28480 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
28481 for (var i = 0; i < buf.length; i += intSize) {
28482 arr.push(fn.call(buf, i));
28483 }
28484 return arr;
28485 }
28486
28487 function toBuffer(arr, size, bigEndian) {
28488 var buf = new Buffer(size);
28489 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
28490 for (var i = 0; i < arr.length; i++) {
28491 fn.call(buf, arr[i], i * 4, true);
28492 }
28493 return buf;
28494 }
28495
28496 function hash(buf, fn, hashSize, bigEndian) {
28497 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
28498 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
28499 return toBuffer(arr, hashSize, bigEndian);
28500 }
28501 exports.hash = hash;
28502 }).call(this,require("buffer").Buffer)
28503 },{"buffer":5}],38:[function(require,module,exports){
28504 'use strict';
28505 /*
28506 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
28507 * Digest Algorithm, as defined in RFC 1321.
28508 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
28509 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
28510 * Distributed under the BSD License
28511 * See http://pajhome.org.uk/crypt/md5 for more info.
28512 */
28513
28514 var helpers = require('./helpers');
28515
28516 /*
28517 * Calculate the MD5 of an array of little-endian words, and a bit length
28518 */
28519 function core_md5(x, len)
28520 {
28521 /* append padding */
28522 x[len >> 5] |= 0x80 << ((len) % 32);
28523 x[(((len + 64) >>> 9) << 4) + 14] = len;
28524
28525 var a = 1732584193;
28526 var b = -271733879;
28527 var c = -1732584194;
28528 var d = 271733878;
28529
28530 for(var i = 0; i < x.length; i += 16)
28531 {
28532 var olda = a;
28533 var oldb = b;
28534 var oldc = c;
28535 var oldd = d;
28536
28537 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
28538 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
28539 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
28540 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
28541 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
28542 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
28543 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
28544 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
28545 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
28546 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
28547 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
28548 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
28549 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
28550 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
28551 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
28552 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
28553
28554 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
28555 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
28556 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
28557 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
28558 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
28559 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
28560 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
28561 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
28562 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
28563 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
28564 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
28565 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
28566 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
28567 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
28568 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
28569 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
28570
28571 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
28572 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
28573 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
28574 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
28575 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
28576 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
28577 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
28578 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
28579 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
28580 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
28581 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
28582 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
28583 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
28584 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
28585 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
28586 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
28587
28588 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
28589 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
28590 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
28591 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
28592 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
28593 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
28594 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
28595 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
28596 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
28597 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
28598 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
28599 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
28600 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
28601 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
28602 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
28603 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
28604
28605 a = safe_add(a, olda);
28606 b = safe_add(b, oldb);
28607 c = safe_add(c, oldc);
28608 d = safe_add(d, oldd);
28609 }
28610 return Array(a, b, c, d);
28611
28612 }
28613
28614 /*
28615 * These functions implement the four basic operations the algorithm uses.
28616 */
28617 function md5_cmn(q, a, b, x, s, t)
28618 {
28619 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
28620 }
28621 function md5_ff(a, b, c, d, x, s, t)
28622 {
28623 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
28624 }
28625 function md5_gg(a, b, c, d, x, s, t)
28626 {
28627 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
28628 }
28629 function md5_hh(a, b, c, d, x, s, t)
28630 {
28631 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
28632 }
28633 function md5_ii(a, b, c, d, x, s, t)
28634 {
28635 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
28636 }
28637
28638 /*
28639 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
28640 * to work around bugs in some JS interpreters.
28641 */
28642 function safe_add(x, y)
28643 {
28644 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
28645 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
28646 return (msw << 16) | (lsw & 0xFFFF);
28647 }
28648
28649 /*
28650 * Bitwise rotate a 32-bit number to the left.
28651 */
28652 function bit_rol(num, cnt)
28653 {
28654 return (num << cnt) | (num >>> (32 - cnt));
28655 }
28656
28657 module.exports = function md5(buf) {
28658 return helpers.hash(buf, core_md5, 16);
28659 };
28660 },{"./helpers":37}],39:[function(require,module,exports){
28661 'use strict';
28662
28663 var elliptic = exports;
28664
28665 elliptic.version = require('../package.json').version;
28666 elliptic.utils = require('./elliptic/utils');
28667 elliptic.rand = require('brorand');
28668 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
28669 elliptic.curve = require('./elliptic/curve');
28670 elliptic.curves = require('./elliptic/curves');
28671
28672 // Protocols
28673 elliptic.ec = require('./elliptic/ec');
28674 elliptic.eddsa = require('./elliptic/eddsa');
28675
28676 },{"../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){
28677 'use strict';
28678
28679 var BN = require('bn.js');
28680 var elliptic = require('../../elliptic');
28681 var utils = elliptic.utils;
28682 var getNAF = utils.getNAF;
28683 var getJSF = utils.getJSF;
28684 var assert = utils.assert;
28685
28686 function BaseCurve(type, conf) {
28687 this.type = type;
28688 this.p = new BN(conf.p, 16);
28689
28690 // Use Montgomery, when there is no fast reduction for the prime
28691 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
28692
28693 // Useful for many curves
28694 this.zero = new BN(0).toRed(this.red);
28695 this.one = new BN(1).toRed(this.red);
28696 this.two = new BN(2).toRed(this.red);
28697
28698 // Curve configuration, optional
28699 this.n = conf.n && new BN(conf.n, 16);
28700 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
28701
28702 // Temporary arrays
28703 this._wnafT1 = new Array(4);
28704 this._wnafT2 = new Array(4);
28705 this._wnafT3 = new Array(4);
28706 this._wnafT4 = new Array(4);
28707
28708 // Generalized Greg Maxwell's trick
28709 var adjustCount = this.n && this.p.div(this.n);
28710 if (!adjustCount || adjustCount.cmpn(100) > 0) {
28711 this.redN = null;
28712 } else {
28713 this._maxwellTrick = true;
28714 this.redN = this.n.toRed(this.red);
28715 }
28716 }
28717 module.exports = BaseCurve;
28718
28719 BaseCurve.prototype.point = function point() {
28720 throw new Error('Not implemented');
28721 };
28722
28723 BaseCurve.prototype.validate = function validate() {
28724 throw new Error('Not implemented');
28725 };
28726
28727 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
28728 assert(p.precomputed);
28729 var doubles = p._getDoubles();
28730
28731 var naf = getNAF(k, 1);
28732 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
28733 I /= 3;
28734
28735 // Translate into more windowed form
28736 var repr = [];
28737 for (var j = 0; j < naf.length; j += doubles.step) {
28738 var nafW = 0;
28739 for (var k = j + doubles.step - 1; k >= j; k--)
28740 nafW = (nafW << 1) + naf[k];
28741 repr.push(nafW);
28742 }
28743
28744 var a = this.jpoint(null, null, null);
28745 var b = this.jpoint(null, null, null);
28746 for (var i = I; i > 0; i--) {
28747 for (var j = 0; j < repr.length; j++) {
28748 var nafW = repr[j];
28749 if (nafW === i)
28750 b = b.mixedAdd(doubles.points[j]);
28751 else if (nafW === -i)
28752 b = b.mixedAdd(doubles.points[j].neg());
28753 }
28754 a = a.add(b);
28755 }
28756 return a.toP();
28757 };
28758
28759 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
28760 var w = 4;
28761
28762 // Precompute window
28763 var nafPoints = p._getNAFPoints(w);
28764 w = nafPoints.wnd;
28765 var wnd = nafPoints.points;
28766
28767 // Get NAF form
28768 var naf = getNAF(k, w);
28769
28770 // Add `this`*(N+1) for every w-NAF index
28771 var acc = this.jpoint(null, null, null);
28772 for (var i = naf.length - 1; i >= 0; i--) {
28773 // Count zeroes
28774 for (var k = 0; i >= 0 && naf[i] === 0; i--)
28775 k++;
28776 if (i >= 0)
28777 k++;
28778 acc = acc.dblp(k);
28779
28780 if (i < 0)
28781 break;
28782 var z = naf[i];
28783 assert(z !== 0);
28784 if (p.type === 'affine') {
28785 // J +- P
28786 if (z > 0)
28787 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
28788 else
28789 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
28790 } else {
28791 // J +- J
28792 if (z > 0)
28793 acc = acc.add(wnd[(z - 1) >> 1]);
28794 else
28795 acc = acc.add(wnd[(-z - 1) >> 1].neg());
28796 }
28797 }
28798 return p.type === 'affine' ? acc.toP() : acc;
28799 };
28800
28801 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
28802 points,
28803 coeffs,
28804 len,
28805 jacobianResult) {
28806 var wndWidth = this._wnafT1;
28807 var wnd = this._wnafT2;
28808 var naf = this._wnafT3;
28809
28810 // Fill all arrays
28811 var max = 0;
28812 for (var i = 0; i < len; i++) {
28813 var p = points[i];
28814 var nafPoints = p._getNAFPoints(defW);
28815 wndWidth[i] = nafPoints.wnd;
28816 wnd[i] = nafPoints.points;
28817 }
28818
28819 // Comb small window NAFs
28820 for (var i = len - 1; i >= 1; i -= 2) {
28821 var a = i - 1;
28822 var b = i;
28823 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
28824 naf[a] = getNAF(coeffs[a], wndWidth[a]);
28825 naf[b] = getNAF(coeffs[b], wndWidth[b]);
28826 max = Math.max(naf[a].length, max);
28827 max = Math.max(naf[b].length, max);
28828 continue;
28829 }
28830
28831 var comb = [
28832 points[a], /* 1 */
28833 null, /* 3 */
28834 null, /* 5 */
28835 points[b] /* 7 */
28836 ];
28837
28838 // Try to avoid Projective points, if possible
28839 if (points[a].y.cmp(points[b].y) === 0) {
28840 comb[1] = points[a].add(points[b]);
28841 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
28842 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
28843 comb[1] = points[a].toJ().mixedAdd(points[b]);
28844 comb[2] = points[a].add(points[b].neg());
28845 } else {
28846 comb[1] = points[a].toJ().mixedAdd(points[b]);
28847 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
28848 }
28849
28850 var index = [
28851 -3, /* -1 -1 */
28852 -1, /* -1 0 */
28853 -5, /* -1 1 */
28854 -7, /* 0 -1 */
28855 0, /* 0 0 */
28856 7, /* 0 1 */
28857 5, /* 1 -1 */
28858 1, /* 1 0 */
28859 3 /* 1 1 */
28860 ];
28861
28862 var jsf = getJSF(coeffs[a], coeffs[b]);
28863 max = Math.max(jsf[0].length, max);
28864 naf[a] = new Array(max);
28865 naf[b] = new Array(max);
28866 for (var j = 0; j < max; j++) {
28867 var ja = jsf[0][j] | 0;
28868 var jb = jsf[1][j] | 0;
28869
28870 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
28871 naf[b][j] = 0;
28872 wnd[a] = comb;
28873 }
28874 }
28875
28876 var acc = this.jpoint(null, null, null);
28877 var tmp = this._wnafT4;
28878 for (var i = max; i >= 0; i--) {
28879 var k = 0;
28880
28881 while (i >= 0) {
28882 var zero = true;
28883 for (var j = 0; j < len; j++) {
28884 tmp[j] = naf[j][i] | 0;
28885 if (tmp[j] !== 0)
28886 zero = false;
28887 }
28888 if (!zero)
28889 break;
28890 k++;
28891 i--;
28892 }
28893 if (i >= 0)
28894 k++;
28895 acc = acc.dblp(k);
28896 if (i < 0)
28897 break;
28898
28899 for (var j = 0; j < len; j++) {
28900 var z = tmp[j];
28901 var p;
28902 if (z === 0)
28903 continue;
28904 else if (z > 0)
28905 p = wnd[j][(z - 1) >> 1];
28906 else if (z < 0)
28907 p = wnd[j][(-z - 1) >> 1].neg();
28908
28909 if (p.type === 'affine')
28910 acc = acc.mixedAdd(p);
28911 else
28912 acc = acc.add(p);
28913 }
28914 }
28915 // Zeroify references
28916 for (var i = 0; i < len; i++)
28917 wnd[i] = null;
28918
28919 if (jacobianResult)
28920 return acc;
28921 else
28922 return acc.toP();
28923 };
28924
28925 function BasePoint(curve, type) {
28926 this.curve = curve;
28927 this.type = type;
28928 this.precomputed = null;
28929 }
28930 BaseCurve.BasePoint = BasePoint;
28931
28932 BasePoint.prototype.eq = function eq(/*other*/) {
28933 throw new Error('Not implemented');
28934 };
28935
28936 BasePoint.prototype.validate = function validate() {
28937 return this.curve.validate(this);
28938 };
28939
28940 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
28941 bytes = utils.toArray(bytes, enc);
28942
28943 var len = this.p.byteLength();
28944
28945 // uncompressed, hybrid-odd, hybrid-even
28946 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
28947 bytes.length - 1 === 2 * len) {
28948 if (bytes[0] === 0x06)
28949 assert(bytes[bytes.length - 1] % 2 === 0);
28950 else if (bytes[0] === 0x07)
28951 assert(bytes[bytes.length - 1] % 2 === 1);
28952
28953 var res = this.point(bytes.slice(1, 1 + len),
28954 bytes.slice(1 + len, 1 + 2 * len));
28955
28956 return res;
28957 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
28958 bytes.length - 1 === len) {
28959 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
28960 }
28961 throw new Error('Unknown point format');
28962 };
28963
28964 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
28965 return this.encode(enc, true);
28966 };
28967
28968 BasePoint.prototype._encode = function _encode(compact) {
28969 var len = this.curve.p.byteLength();
28970 var x = this.getX().toArray('be', len);
28971
28972 if (compact)
28973 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
28974
28975 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
28976 };
28977
28978 BasePoint.prototype.encode = function encode(enc, compact) {
28979 return utils.encode(this._encode(compact), enc);
28980 };
28981
28982 BasePoint.prototype.precompute = function precompute(power) {
28983 if (this.precomputed)
28984 return this;
28985
28986 var precomputed = {
28987 doubles: null,
28988 naf: null,
28989 beta: null
28990 };
28991 precomputed.naf = this._getNAFPoints(8);
28992 precomputed.doubles = this._getDoubles(4, power);
28993 precomputed.beta = this._getBeta();
28994 this.precomputed = precomputed;
28995
28996 return this;
28997 };
28998
28999 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
29000 if (!this.precomputed)
29001 return false;
29002
29003 var doubles = this.precomputed.doubles;
29004 if (!doubles)
29005 return false;
29006
29007 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
29008 };
29009
29010 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
29011 if (this.precomputed && this.precomputed.doubles)
29012 return this.precomputed.doubles;
29013
29014 var doubles = [ this ];
29015 var acc = this;
29016 for (var i = 0; i < power; i += step) {
29017 for (var j = 0; j < step; j++)
29018 acc = acc.dbl();
29019 doubles.push(acc);
29020 }
29021 return {
29022 step: step,
29023 points: doubles
29024 };
29025 };
29026
29027 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
29028 if (this.precomputed && this.precomputed.naf)
29029 return this.precomputed.naf;
29030
29031 var res = [ this ];
29032 var max = (1 << wnd) - 1;
29033 var dbl = max === 1 ? null : this.dbl();
29034 for (var i = 1; i < max; i++)
29035 res[i] = res[i - 1].add(dbl);
29036 return {
29037 wnd: wnd,
29038 points: res
29039 };
29040 };
29041
29042 BasePoint.prototype._getBeta = function _getBeta() {
29043 return null;
29044 };
29045
29046 BasePoint.prototype.dblp = function dblp(k) {
29047 var r = this;
29048 for (var i = 0; i < k; i++)
29049 r = r.dbl();
29050 return r;
29051 };
29052
29053 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
29054 'use strict';
29055
29056 var curve = require('../curve');
29057 var elliptic = require('../../elliptic');
29058 var BN = require('bn.js');
29059 var inherits = require('inherits');
29060 var Base = curve.base;
29061
29062 var assert = elliptic.utils.assert;
29063
29064 function EdwardsCurve(conf) {
29065 // NOTE: Important as we are creating point in Base.call()
29066 this.twisted = (conf.a | 0) !== 1;
29067 this.mOneA = this.twisted && (conf.a | 0) === -1;
29068 this.extended = this.mOneA;
29069
29070 Base.call(this, 'edwards', conf);
29071
29072 this.a = new BN(conf.a, 16).umod(this.red.m);
29073 this.a = this.a.toRed(this.red);
29074 this.c = new BN(conf.c, 16).toRed(this.red);
29075 this.c2 = this.c.redSqr();
29076 this.d = new BN(conf.d, 16).toRed(this.red);
29077 this.dd = this.d.redAdd(this.d);
29078
29079 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
29080 this.oneC = (conf.c | 0) === 1;
29081 }
29082 inherits(EdwardsCurve, Base);
29083 module.exports = EdwardsCurve;
29084
29085 EdwardsCurve.prototype._mulA = function _mulA(num) {
29086 if (this.mOneA)
29087 return num.redNeg();
29088 else
29089 return this.a.redMul(num);
29090 };
29091
29092 EdwardsCurve.prototype._mulC = function _mulC(num) {
29093 if (this.oneC)
29094 return num;
29095 else
29096 return this.c.redMul(num);
29097 };
29098
29099 // Just for compatibility with Short curve
29100 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
29101 return this.point(x, y, z, t);
29102 };
29103
29104 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
29105 x = new BN(x, 16);
29106 if (!x.red)
29107 x = x.toRed(this.red);
29108
29109 var x2 = x.redSqr();
29110 var rhs = this.c2.redSub(this.a.redMul(x2));
29111 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
29112
29113 var y2 = rhs.redMul(lhs.redInvm());
29114 var y = y2.redSqrt();
29115 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
29116 throw new Error('invalid point');
29117
29118 var isOdd = y.fromRed().isOdd();
29119 if (odd && !isOdd || !odd && isOdd)
29120 y = y.redNeg();
29121
29122 return this.point(x, y);
29123 };
29124
29125 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
29126 y = new BN(y, 16);
29127 if (!y.red)
29128 y = y.toRed(this.red);
29129
29130 // x^2 = (y^2 - 1) / (d y^2 + 1)
29131 var y2 = y.redSqr();
29132 var lhs = y2.redSub(this.one);
29133 var rhs = y2.redMul(this.d).redAdd(this.one);
29134 var x2 = lhs.redMul(rhs.redInvm());
29135
29136 if (x2.cmp(this.zero) === 0) {
29137 if (odd)
29138 throw new Error('invalid point');
29139 else
29140 return this.point(this.zero, y);
29141 }
29142
29143 var x = x2.redSqrt();
29144 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
29145 throw new Error('invalid point');
29146
29147 if (x.isOdd() !== odd)
29148 x = x.redNeg();
29149
29150 return this.point(x, y);
29151 };
29152
29153 EdwardsCurve.prototype.validate = function validate(point) {
29154 if (point.isInfinity())
29155 return true;
29156
29157 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
29158 point.normalize();
29159
29160 var x2 = point.x.redSqr();
29161 var y2 = point.y.redSqr();
29162 var lhs = x2.redMul(this.a).redAdd(y2);
29163 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
29164
29165 return lhs.cmp(rhs) === 0;
29166 };
29167
29168 function Point(curve, x, y, z, t) {
29169 Base.BasePoint.call(this, curve, 'projective');
29170 if (x === null && y === null && z === null) {
29171 this.x = this.curve.zero;
29172 this.y = this.curve.one;
29173 this.z = this.curve.one;
29174 this.t = this.curve.zero;
29175 this.zOne = true;
29176 } else {
29177 this.x = new BN(x, 16);
29178 this.y = new BN(y, 16);
29179 this.z = z ? new BN(z, 16) : this.curve.one;
29180 this.t = t && new BN(t, 16);
29181 if (!this.x.red)
29182 this.x = this.x.toRed(this.curve.red);
29183 if (!this.y.red)
29184 this.y = this.y.toRed(this.curve.red);
29185 if (!this.z.red)
29186 this.z = this.z.toRed(this.curve.red);
29187 if (this.t && !this.t.red)
29188 this.t = this.t.toRed(this.curve.red);
29189 this.zOne = this.z === this.curve.one;
29190
29191 // Use extended coordinates
29192 if (this.curve.extended && !this.t) {
29193 this.t = this.x.redMul(this.y);
29194 if (!this.zOne)
29195 this.t = this.t.redMul(this.z.redInvm());
29196 }
29197 }
29198 }
29199 inherits(Point, Base.BasePoint);
29200
29201 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
29202 return Point.fromJSON(this, obj);
29203 };
29204
29205 EdwardsCurve.prototype.point = function point(x, y, z, t) {
29206 return new Point(this, x, y, z, t);
29207 };
29208
29209 Point.fromJSON = function fromJSON(curve, obj) {
29210 return new Point(curve, obj[0], obj[1], obj[2]);
29211 };
29212
29213 Point.prototype.inspect = function inspect() {
29214 if (this.isInfinity())
29215 return '<EC Point Infinity>';
29216 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
29217 ' y: ' + this.y.fromRed().toString(16, 2) +
29218 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
29219 };
29220
29221 Point.prototype.isInfinity = function isInfinity() {
29222 // XXX This code assumes that zero is always zero in red
29223 return this.x.cmpn(0) === 0 &&
29224 this.y.cmp(this.z) === 0;
29225 };
29226
29227 Point.prototype._extDbl = function _extDbl() {
29228 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
29229 // #doubling-dbl-2008-hwcd
29230 // 4M + 4S
29231
29232 // A = X1^2
29233 var a = this.x.redSqr();
29234 // B = Y1^2
29235 var b = this.y.redSqr();
29236 // C = 2 * Z1^2
29237 var c = this.z.redSqr();
29238 c = c.redIAdd(c);
29239 // D = a * A
29240 var d = this.curve._mulA(a);
29241 // E = (X1 + Y1)^2 - A - B
29242 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
29243 // G = D + B
29244 var g = d.redAdd(b);
29245 // F = G - C
29246 var f = g.redSub(c);
29247 // H = D - B
29248 var h = d.redSub(b);
29249 // X3 = E * F
29250 var nx = e.redMul(f);
29251 // Y3 = G * H
29252 var ny = g.redMul(h);
29253 // T3 = E * H
29254 var nt = e.redMul(h);
29255 // Z3 = F * G
29256 var nz = f.redMul(g);
29257 return this.curve.point(nx, ny, nz, nt);
29258 };
29259
29260 Point.prototype._projDbl = function _projDbl() {
29261 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
29262 // #doubling-dbl-2008-bbjlp
29263 // #doubling-dbl-2007-bl
29264 // and others
29265 // Generally 3M + 4S or 2M + 4S
29266
29267 // B = (X1 + Y1)^2
29268 var b = this.x.redAdd(this.y).redSqr();
29269 // C = X1^2
29270 var c = this.x.redSqr();
29271 // D = Y1^2
29272 var d = this.y.redSqr();
29273
29274 var nx;
29275 var ny;
29276 var nz;
29277 if (this.curve.twisted) {
29278 // E = a * C
29279 var e = this.curve._mulA(c);
29280 // F = E + D
29281 var f = e.redAdd(d);
29282 if (this.zOne) {
29283 // X3 = (B - C - D) * (F - 2)
29284 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
29285 // Y3 = F * (E - D)
29286 ny = f.redMul(e.redSub(d));
29287 // Z3 = F^2 - 2 * F
29288 nz = f.redSqr().redSub(f).redSub(f);
29289 } else {
29290 // H = Z1^2
29291 var h = this.z.redSqr();
29292 // J = F - 2 * H
29293 var j = f.redSub(h).redISub(h);
29294 // X3 = (B-C-D)*J
29295 nx = b.redSub(c).redISub(d).redMul(j);
29296 // Y3 = F * (E - D)
29297 ny = f.redMul(e.redSub(d));
29298 // Z3 = F * J
29299 nz = f.redMul(j);
29300 }
29301 } else {
29302 // E = C + D
29303 var e = c.redAdd(d);
29304 // H = (c * Z1)^2
29305 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
29306 // J = E - 2 * H
29307 var j = e.redSub(h).redSub(h);
29308 // X3 = c * (B - E) * J
29309 nx = this.curve._mulC(b.redISub(e)).redMul(j);
29310 // Y3 = c * E * (C - D)
29311 ny = this.curve._mulC(e).redMul(c.redISub(d));
29312 // Z3 = E * J
29313 nz = e.redMul(j);
29314 }
29315 return this.curve.point(nx, ny, nz);
29316 };
29317
29318 Point.prototype.dbl = function dbl() {
29319 if (this.isInfinity())
29320 return this;
29321
29322 // Double in extended coordinates
29323 if (this.curve.extended)
29324 return this._extDbl();
29325 else
29326 return this._projDbl();
29327 };
29328
29329 Point.prototype._extAdd = function _extAdd(p) {
29330 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
29331 // #addition-add-2008-hwcd-3
29332 // 8M
29333
29334 // A = (Y1 - X1) * (Y2 - X2)
29335 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
29336 // B = (Y1 + X1) * (Y2 + X2)
29337 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
29338 // C = T1 * k * T2
29339 var c = this.t.redMul(this.curve.dd).redMul(p.t);
29340 // D = Z1 * 2 * Z2
29341 var d = this.z.redMul(p.z.redAdd(p.z));
29342 // E = B - A
29343 var e = b.redSub(a);
29344 // F = D - C
29345 var f = d.redSub(c);
29346 // G = D + C
29347 var g = d.redAdd(c);
29348 // H = B + A
29349 var h = b.redAdd(a);
29350 // X3 = E * F
29351 var nx = e.redMul(f);
29352 // Y3 = G * H
29353 var ny = g.redMul(h);
29354 // T3 = E * H
29355 var nt = e.redMul(h);
29356 // Z3 = F * G
29357 var nz = f.redMul(g);
29358 return this.curve.point(nx, ny, nz, nt);
29359 };
29360
29361 Point.prototype._projAdd = function _projAdd(p) {
29362 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
29363 // #addition-add-2008-bbjlp
29364 // #addition-add-2007-bl
29365 // 10M + 1S
29366
29367 // A = Z1 * Z2
29368 var a = this.z.redMul(p.z);
29369 // B = A^2
29370 var b = a.redSqr();
29371 // C = X1 * X2
29372 var c = this.x.redMul(p.x);
29373 // D = Y1 * Y2
29374 var d = this.y.redMul(p.y);
29375 // E = d * C * D
29376 var e = this.curve.d.redMul(c).redMul(d);
29377 // F = B - E
29378 var f = b.redSub(e);
29379 // G = B + E
29380 var g = b.redAdd(e);
29381 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
29382 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
29383 var nx = a.redMul(f).redMul(tmp);
29384 var ny;
29385 var nz;
29386 if (this.curve.twisted) {
29387 // Y3 = A * G * (D - a * C)
29388 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
29389 // Z3 = F * G
29390 nz = f.redMul(g);
29391 } else {
29392 // Y3 = A * G * (D - C)
29393 ny = a.redMul(g).redMul(d.redSub(c));
29394 // Z3 = c * F * G
29395 nz = this.curve._mulC(f).redMul(g);
29396 }
29397 return this.curve.point(nx, ny, nz);
29398 };
29399
29400 Point.prototype.add = function add(p) {
29401 if (this.isInfinity())
29402 return p;
29403 if (p.isInfinity())
29404 return this;
29405
29406 if (this.curve.extended)
29407 return this._extAdd(p);
29408 else
29409 return this._projAdd(p);
29410 };
29411
29412 Point.prototype.mul = function mul(k) {
29413 if (this._hasDoubles(k))
29414 return this.curve._fixedNafMul(this, k);
29415 else
29416 return this.curve._wnafMul(this, k);
29417 };
29418
29419 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
29420 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
29421 };
29422
29423 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
29424 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
29425 };
29426
29427 Point.prototype.normalize = function normalize() {
29428 if (this.zOne)
29429 return this;
29430
29431 // Normalize coordinates
29432 var zi = this.z.redInvm();
29433 this.x = this.x.redMul(zi);
29434 this.y = this.y.redMul(zi);
29435 if (this.t)
29436 this.t = this.t.redMul(zi);
29437 this.z = this.curve.one;
29438 this.zOne = true;
29439 return this;
29440 };
29441
29442 Point.prototype.neg = function neg() {
29443 return this.curve.point(this.x.redNeg(),
29444 this.y,
29445 this.z,
29446 this.t && this.t.redNeg());
29447 };
29448
29449 Point.prototype.getX = function getX() {
29450 this.normalize();
29451 return this.x.fromRed();
29452 };
29453
29454 Point.prototype.getY = function getY() {
29455 this.normalize();
29456 return this.y.fromRed();
29457 };
29458
29459 Point.prototype.eq = function eq(other) {
29460 return this === other ||
29461 this.getX().cmp(other.getX()) === 0 &&
29462 this.getY().cmp(other.getY()) === 0;
29463 };
29464
29465 Point.prototype.eqXToP = function eqXToP(x) {
29466 var rx = x.toRed(this.curve.red).redMul(this.z);
29467 if (this.x.cmp(rx) === 0)
29468 return true;
29469
29470 var xc = x.clone();
29471 var t = this.curve.redN.redMul(this.z);
29472 for (;;) {
29473 xc.iadd(this.curve.n);
29474 if (xc.cmp(this.curve.p) >= 0)
29475 return false;
29476
29477 rx.redIAdd(t);
29478 if (this.x.cmp(rx) === 0)
29479 return true;
29480 }
29481 return false;
29482 };
29483
29484 // Compatibility with BaseCurve
29485 Point.prototype.toP = Point.prototype.normalize;
29486 Point.prototype.mixedAdd = Point.prototype.add;
29487
29488 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
29489 'use strict';
29490
29491 var curve = exports;
29492
29493 curve.base = require('./base');
29494 curve.short = require('./short');
29495 curve.mont = require('./mont');
29496 curve.edwards = require('./edwards');
29497
29498 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
29499 'use strict';
29500
29501 var curve = require('../curve');
29502 var BN = require('bn.js');
29503 var inherits = require('inherits');
29504 var Base = curve.base;
29505
29506 var elliptic = require('../../elliptic');
29507 var utils = elliptic.utils;
29508
29509 function MontCurve(conf) {
29510 Base.call(this, 'mont', conf);
29511
29512 this.a = new BN(conf.a, 16).toRed(this.red);
29513 this.b = new BN(conf.b, 16).toRed(this.red);
29514 this.i4 = new BN(4).toRed(this.red).redInvm();
29515 this.two = new BN(2).toRed(this.red);
29516 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
29517 }
29518 inherits(MontCurve, Base);
29519 module.exports = MontCurve;
29520
29521 MontCurve.prototype.validate = function validate(point) {
29522 var x = point.normalize().x;
29523 var x2 = x.redSqr();
29524 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
29525 var y = rhs.redSqrt();
29526
29527 return y.redSqr().cmp(rhs) === 0;
29528 };
29529
29530 function Point(curve, x, z) {
29531 Base.BasePoint.call(this, curve, 'projective');
29532 if (x === null && z === null) {
29533 this.x = this.curve.one;
29534 this.z = this.curve.zero;
29535 } else {
29536 this.x = new BN(x, 16);
29537 this.z = new BN(z, 16);
29538 if (!this.x.red)
29539 this.x = this.x.toRed(this.curve.red);
29540 if (!this.z.red)
29541 this.z = this.z.toRed(this.curve.red);
29542 }
29543 }
29544 inherits(Point, Base.BasePoint);
29545
29546 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
29547 return this.point(utils.toArray(bytes, enc), 1);
29548 };
29549
29550 MontCurve.prototype.point = function point(x, z) {
29551 return new Point(this, x, z);
29552 };
29553
29554 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
29555 return Point.fromJSON(this, obj);
29556 };
29557
29558 Point.prototype.precompute = function precompute() {
29559 // No-op
29560 };
29561
29562 Point.prototype._encode = function _encode() {
29563 return this.getX().toArray('be', this.curve.p.byteLength());
29564 };
29565
29566 Point.fromJSON = function fromJSON(curve, obj) {
29567 return new Point(curve, obj[0], obj[1] || curve.one);
29568 };
29569
29570 Point.prototype.inspect = function inspect() {
29571 if (this.isInfinity())
29572 return '<EC Point Infinity>';
29573 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
29574 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
29575 };
29576
29577 Point.prototype.isInfinity = function isInfinity() {
29578 // XXX This code assumes that zero is always zero in red
29579 return this.z.cmpn(0) === 0;
29580 };
29581
29582 Point.prototype.dbl = function dbl() {
29583 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
29584 // 2M + 2S + 4A
29585
29586 // A = X1 + Z1
29587 var a = this.x.redAdd(this.z);
29588 // AA = A^2
29589 var aa = a.redSqr();
29590 // B = X1 - Z1
29591 var b = this.x.redSub(this.z);
29592 // BB = B^2
29593 var bb = b.redSqr();
29594 // C = AA - BB
29595 var c = aa.redSub(bb);
29596 // X3 = AA * BB
29597 var nx = aa.redMul(bb);
29598 // Z3 = C * (BB + A24 * C)
29599 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
29600 return this.curve.point(nx, nz);
29601 };
29602
29603 Point.prototype.add = function add() {
29604 throw new Error('Not supported on Montgomery curve');
29605 };
29606
29607 Point.prototype.diffAdd = function diffAdd(p, diff) {
29608 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
29609 // 4M + 2S + 6A
29610
29611 // A = X2 + Z2
29612 var a = this.x.redAdd(this.z);
29613 // B = X2 - Z2
29614 var b = this.x.redSub(this.z);
29615 // C = X3 + Z3
29616 var c = p.x.redAdd(p.z);
29617 // D = X3 - Z3
29618 var d = p.x.redSub(p.z);
29619 // DA = D * A
29620 var da = d.redMul(a);
29621 // CB = C * B
29622 var cb = c.redMul(b);
29623 // X5 = Z1 * (DA + CB)^2
29624 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
29625 // Z5 = X1 * (DA - CB)^2
29626 var nz = diff.x.redMul(da.redISub(cb).redSqr());
29627 return this.curve.point(nx, nz);
29628 };
29629
29630 Point.prototype.mul = function mul(k) {
29631 var t = k.clone();
29632 var a = this; // (N / 2) * Q + Q
29633 var b = this.curve.point(null, null); // (N / 2) * Q
29634 var c = this; // Q
29635
29636 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
29637 bits.push(t.andln(1));
29638
29639 for (var i = bits.length - 1; i >= 0; i--) {
29640 if (bits[i] === 0) {
29641 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
29642 a = a.diffAdd(b, c);
29643 // N * Q = 2 * ((N / 2) * Q + Q))
29644 b = b.dbl();
29645 } else {
29646 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
29647 b = a.diffAdd(b, c);
29648 // N * Q + Q = 2 * ((N / 2) * Q + Q)
29649 a = a.dbl();
29650 }
29651 }
29652 return b;
29653 };
29654
29655 Point.prototype.mulAdd = function mulAdd() {
29656 throw new Error('Not supported on Montgomery curve');
29657 };
29658
29659 Point.prototype.jumlAdd = function jumlAdd() {
29660 throw new Error('Not supported on Montgomery curve');
29661 };
29662
29663 Point.prototype.eq = function eq(other) {
29664 return this.getX().cmp(other.getX()) === 0;
29665 };
29666
29667 Point.prototype.normalize = function normalize() {
29668 this.x = this.x.redMul(this.z.redInvm());
29669 this.z = this.curve.one;
29670 return this;
29671 };
29672
29673 Point.prototype.getX = function getX() {
29674 // Normalize coordinates
29675 this.normalize();
29676
29677 return this.x.fromRed();
29678 };
29679
29680 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
29681 'use strict';
29682
29683 var curve = require('../curve');
29684 var elliptic = require('../../elliptic');
29685 var BN = require('bn.js');
29686 var inherits = require('inherits');
29687 var Base = curve.base;
29688
29689 var assert = elliptic.utils.assert;
29690
29691 function ShortCurve(conf) {
29692 Base.call(this, 'short', conf);
29693
29694 this.a = new BN(conf.a, 16).toRed(this.red);
29695 this.b = new BN(conf.b, 16).toRed(this.red);
29696 this.tinv = this.two.redInvm();
29697
29698 this.zeroA = this.a.fromRed().cmpn(0) === 0;
29699 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
29700
29701 // If the curve is endomorphic, precalculate beta and lambda
29702 this.endo = this._getEndomorphism(conf);
29703 this._endoWnafT1 = new Array(4);
29704 this._endoWnafT2 = new Array(4);
29705 }
29706 inherits(ShortCurve, Base);
29707 module.exports = ShortCurve;
29708
29709 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
29710 // No efficient endomorphism
29711 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
29712 return;
29713
29714 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
29715 var beta;
29716 var lambda;
29717 if (conf.beta) {
29718 beta = new BN(conf.beta, 16).toRed(this.red);
29719 } else {
29720 var betas = this._getEndoRoots(this.p);
29721 // Choose the smallest beta
29722 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
29723 beta = beta.toRed(this.red);
29724 }
29725 if (conf.lambda) {
29726 lambda = new BN(conf.lambda, 16);
29727 } else {
29728 // Choose the lambda that is matching selected beta
29729 var lambdas = this._getEndoRoots(this.n);
29730 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
29731 lambda = lambdas[0];
29732 } else {
29733 lambda = lambdas[1];
29734 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
29735 }
29736 }
29737
29738 // Get basis vectors, used for balanced length-two representation
29739 var basis;
29740 if (conf.basis) {
29741 basis = conf.basis.map(function(vec) {
29742 return {
29743 a: new BN(vec.a, 16),
29744 b: new BN(vec.b, 16)
29745 };
29746 });
29747 } else {
29748 basis = this._getEndoBasis(lambda);
29749 }
29750
29751 return {
29752 beta: beta,
29753 lambda: lambda,
29754 basis: basis
29755 };
29756 };
29757
29758 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
29759 // Find roots of for x^2 + x + 1 in F
29760 // Root = (-1 +- Sqrt(-3)) / 2
29761 //
29762 var red = num === this.p ? this.red : BN.mont(num);
29763 var tinv = new BN(2).toRed(red).redInvm();
29764 var ntinv = tinv.redNeg();
29765
29766 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
29767
29768 var l1 = ntinv.redAdd(s).fromRed();
29769 var l2 = ntinv.redSub(s).fromRed();
29770 return [ l1, l2 ];
29771 };
29772
29773 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
29774 // aprxSqrt >= sqrt(this.n)
29775 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
29776
29777 // 3.74
29778 // Run EGCD, until r(L + 1) < aprxSqrt
29779 var u = lambda;
29780 var v = this.n.clone();
29781 var x1 = new BN(1);
29782 var y1 = new BN(0);
29783 var x2 = new BN(0);
29784 var y2 = new BN(1);
29785
29786 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
29787 var a0;
29788 var b0;
29789 // First vector
29790 var a1;
29791 var b1;
29792 // Second vector
29793 var a2;
29794 var b2;
29795
29796 var prevR;
29797 var i = 0;
29798 var r;
29799 var x;
29800 while (u.cmpn(0) !== 0) {
29801 var q = v.div(u);
29802 r = v.sub(q.mul(u));
29803 x = x2.sub(q.mul(x1));
29804 var y = y2.sub(q.mul(y1));
29805
29806 if (!a1 && r.cmp(aprxSqrt) < 0) {
29807 a0 = prevR.neg();
29808 b0 = x1;
29809 a1 = r.neg();
29810 b1 = x;
29811 } else if (a1 && ++i === 2) {
29812 break;
29813 }
29814 prevR = r;
29815
29816 v = u;
29817 u = r;
29818 x2 = x1;
29819 x1 = x;
29820 y2 = y1;
29821 y1 = y;
29822 }
29823 a2 = r.neg();
29824 b2 = x;
29825
29826 var len1 = a1.sqr().add(b1.sqr());
29827 var len2 = a2.sqr().add(b2.sqr());
29828 if (len2.cmp(len1) >= 0) {
29829 a2 = a0;
29830 b2 = b0;
29831 }
29832
29833 // Normalize signs
29834 if (a1.negative) {
29835 a1 = a1.neg();
29836 b1 = b1.neg();
29837 }
29838 if (a2.negative) {
29839 a2 = a2.neg();
29840 b2 = b2.neg();
29841 }
29842
29843 return [
29844 { a: a1, b: b1 },
29845 { a: a2, b: b2 }
29846 ];
29847 };
29848
29849 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
29850 var basis = this.endo.basis;
29851 var v1 = basis[0];
29852 var v2 = basis[1];
29853
29854 var c1 = v2.b.mul(k).divRound(this.n);
29855 var c2 = v1.b.neg().mul(k).divRound(this.n);
29856
29857 var p1 = c1.mul(v1.a);
29858 var p2 = c2.mul(v2.a);
29859 var q1 = c1.mul(v1.b);
29860 var q2 = c2.mul(v2.b);
29861
29862 // Calculate answer
29863 var k1 = k.sub(p1).sub(p2);
29864 var k2 = q1.add(q2).neg();
29865 return { k1: k1, k2: k2 };
29866 };
29867
29868 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
29869 x = new BN(x, 16);
29870 if (!x.red)
29871 x = x.toRed(this.red);
29872
29873 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
29874 var y = y2.redSqrt();
29875 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
29876 throw new Error('invalid point');
29877
29878 // XXX Is there any way to tell if the number is odd without converting it
29879 // to non-red form?
29880 var isOdd = y.fromRed().isOdd();
29881 if (odd && !isOdd || !odd && isOdd)
29882 y = y.redNeg();
29883
29884 return this.point(x, y);
29885 };
29886
29887 ShortCurve.prototype.validate = function validate(point) {
29888 if (point.inf)
29889 return true;
29890
29891 var x = point.x;
29892 var y = point.y;
29893
29894 var ax = this.a.redMul(x);
29895 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
29896 return y.redSqr().redISub(rhs).cmpn(0) === 0;
29897 };
29898
29899 ShortCurve.prototype._endoWnafMulAdd =
29900 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
29901 var npoints = this._endoWnafT1;
29902 var ncoeffs = this._endoWnafT2;
29903 for (var i = 0; i < points.length; i++) {
29904 var split = this._endoSplit(coeffs[i]);
29905 var p = points[i];
29906 var beta = p._getBeta();
29907
29908 if (split.k1.negative) {
29909 split.k1.ineg();
29910 p = p.neg(true);
29911 }
29912 if (split.k2.negative) {
29913 split.k2.ineg();
29914 beta = beta.neg(true);
29915 }
29916
29917 npoints[i * 2] = p;
29918 npoints[i * 2 + 1] = beta;
29919 ncoeffs[i * 2] = split.k1;
29920 ncoeffs[i * 2 + 1] = split.k2;
29921 }
29922 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
29923
29924 // Clean-up references to points and coefficients
29925 for (var j = 0; j < i * 2; j++) {
29926 npoints[j] = null;
29927 ncoeffs[j] = null;
29928 }
29929 return res;
29930 };
29931
29932 function Point(curve, x, y, isRed) {
29933 Base.BasePoint.call(this, curve, 'affine');
29934 if (x === null && y === null) {
29935 this.x = null;
29936 this.y = null;
29937 this.inf = true;
29938 } else {
29939 this.x = new BN(x, 16);
29940 this.y = new BN(y, 16);
29941 // Force redgomery representation when loading from JSON
29942 if (isRed) {
29943 this.x.forceRed(this.curve.red);
29944 this.y.forceRed(this.curve.red);
29945 }
29946 if (!this.x.red)
29947 this.x = this.x.toRed(this.curve.red);
29948 if (!this.y.red)
29949 this.y = this.y.toRed(this.curve.red);
29950 this.inf = false;
29951 }
29952 }
29953 inherits(Point, Base.BasePoint);
29954
29955 ShortCurve.prototype.point = function point(x, y, isRed) {
29956 return new Point(this, x, y, isRed);
29957 };
29958
29959 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
29960 return Point.fromJSON(this, obj, red);
29961 };
29962
29963 Point.prototype._getBeta = function _getBeta() {
29964 if (!this.curve.endo)
29965 return;
29966
29967 var pre = this.precomputed;
29968 if (pre && pre.beta)
29969 return pre.beta;
29970
29971 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
29972 if (pre) {
29973 var curve = this.curve;
29974 var endoMul = function(p) {
29975 return curve.point(p.x.redMul(curve.endo.beta), p.y);
29976 };
29977 pre.beta = beta;
29978 beta.precomputed = {
29979 beta: null,
29980 naf: pre.naf && {
29981 wnd: pre.naf.wnd,
29982 points: pre.naf.points.map(endoMul)
29983 },
29984 doubles: pre.doubles && {
29985 step: pre.doubles.step,
29986 points: pre.doubles.points.map(endoMul)
29987 }
29988 };
29989 }
29990 return beta;
29991 };
29992
29993 Point.prototype.toJSON = function toJSON() {
29994 if (!this.precomputed)
29995 return [ this.x, this.y ];
29996
29997 return [ this.x, this.y, this.precomputed && {
29998 doubles: this.precomputed.doubles && {
29999 step: this.precomputed.doubles.step,
30000 points: this.precomputed.doubles.points.slice(1)
30001 },
30002 naf: this.precomputed.naf && {
30003 wnd: this.precomputed.naf.wnd,
30004 points: this.precomputed.naf.points.slice(1)
30005 }
30006 } ];
30007 };
30008
30009 Point.fromJSON = function fromJSON(curve, obj, red) {
30010 if (typeof obj === 'string')
30011 obj = JSON.parse(obj);
30012 var res = curve.point(obj[0], obj[1], red);
30013 if (!obj[2])
30014 return res;
30015
30016 function obj2point(obj) {
30017 return curve.point(obj[0], obj[1], red);
30018 }
30019
30020 var pre = obj[2];
30021 res.precomputed = {
30022 beta: null,
30023 doubles: pre.doubles && {
30024 step: pre.doubles.step,
30025 points: [ res ].concat(pre.doubles.points.map(obj2point))
30026 },
30027 naf: pre.naf && {
30028 wnd: pre.naf.wnd,
30029 points: [ res ].concat(pre.naf.points.map(obj2point))
30030 }
30031 };
30032 return res;
30033 };
30034
30035 Point.prototype.inspect = function inspect() {
30036 if (this.isInfinity())
30037 return '<EC Point Infinity>';
30038 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
30039 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
30040 };
30041
30042 Point.prototype.isInfinity = function isInfinity() {
30043 return this.inf;
30044 };
30045
30046 Point.prototype.add = function add(p) {
30047 // O + P = P
30048 if (this.inf)
30049 return p;
30050
30051 // P + O = P
30052 if (p.inf)
30053 return this;
30054
30055 // P + P = 2P
30056 if (this.eq(p))
30057 return this.dbl();
30058
30059 // P + (-P) = O
30060 if (this.neg().eq(p))
30061 return this.curve.point(null, null);
30062
30063 // P + Q = O
30064 if (this.x.cmp(p.x) === 0)
30065 return this.curve.point(null, null);
30066
30067 var c = this.y.redSub(p.y);
30068 if (c.cmpn(0) !== 0)
30069 c = c.redMul(this.x.redSub(p.x).redInvm());
30070 var nx = c.redSqr().redISub(this.x).redISub(p.x);
30071 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
30072 return this.curve.point(nx, ny);
30073 };
30074
30075 Point.prototype.dbl = function dbl() {
30076 if (this.inf)
30077 return this;
30078
30079 // 2P = O
30080 var ys1 = this.y.redAdd(this.y);
30081 if (ys1.cmpn(0) === 0)
30082 return this.curve.point(null, null);
30083
30084 var a = this.curve.a;
30085
30086 var x2 = this.x.redSqr();
30087 var dyinv = ys1.redInvm();
30088 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
30089
30090 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
30091 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
30092 return this.curve.point(nx, ny);
30093 };
30094
30095 Point.prototype.getX = function getX() {
30096 return this.x.fromRed();
30097 };
30098
30099 Point.prototype.getY = function getY() {
30100 return this.y.fromRed();
30101 };
30102
30103 Point.prototype.mul = function mul(k) {
30104 k = new BN(k, 16);
30105
30106 if (this._hasDoubles(k))
30107 return this.curve._fixedNafMul(this, k);
30108 else if (this.curve.endo)
30109 return this.curve._endoWnafMulAdd([ this ], [ k ]);
30110 else
30111 return this.curve._wnafMul(this, k);
30112 };
30113
30114 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
30115 var points = [ this, p2 ];
30116 var coeffs = [ k1, k2 ];
30117 if (this.curve.endo)
30118 return this.curve._endoWnafMulAdd(points, coeffs);
30119 else
30120 return this.curve._wnafMulAdd(1, points, coeffs, 2);
30121 };
30122
30123 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
30124 var points = [ this, p2 ];
30125 var coeffs = [ k1, k2 ];
30126 if (this.curve.endo)
30127 return this.curve._endoWnafMulAdd(points, coeffs, true);
30128 else
30129 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
30130 };
30131
30132 Point.prototype.eq = function eq(p) {
30133 return this === p ||
30134 this.inf === p.inf &&
30135 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
30136 };
30137
30138 Point.prototype.neg = function neg(_precompute) {
30139 if (this.inf)
30140 return this;
30141
30142 var res = this.curve.point(this.x, this.y.redNeg());
30143 if (_precompute && this.precomputed) {
30144 var pre = this.precomputed;
30145 var negate = function(p) {
30146 return p.neg();
30147 };
30148 res.precomputed = {
30149 naf: pre.naf && {
30150 wnd: pre.naf.wnd,
30151 points: pre.naf.points.map(negate)
30152 },
30153 doubles: pre.doubles && {
30154 step: pre.doubles.step,
30155 points: pre.doubles.points.map(negate)
30156 }
30157 };
30158 }
30159 return res;
30160 };
30161
30162 Point.prototype.toJ = function toJ() {
30163 if (this.inf)
30164 return this.curve.jpoint(null, null, null);
30165
30166 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
30167 return res;
30168 };
30169
30170 function JPoint(curve, x, y, z) {
30171 Base.BasePoint.call(this, curve, 'jacobian');
30172 if (x === null && y === null && z === null) {
30173 this.x = this.curve.one;
30174 this.y = this.curve.one;
30175 this.z = new BN(0);
30176 } else {
30177 this.x = new BN(x, 16);
30178 this.y = new BN(y, 16);
30179 this.z = new BN(z, 16);
30180 }
30181 if (!this.x.red)
30182 this.x = this.x.toRed(this.curve.red);
30183 if (!this.y.red)
30184 this.y = this.y.toRed(this.curve.red);
30185 if (!this.z.red)
30186 this.z = this.z.toRed(this.curve.red);
30187
30188 this.zOne = this.z === this.curve.one;
30189 }
30190 inherits(JPoint, Base.BasePoint);
30191
30192 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
30193 return new JPoint(this, x, y, z);
30194 };
30195
30196 JPoint.prototype.toP = function toP() {
30197 if (this.isInfinity())
30198 return this.curve.point(null, null);
30199
30200 var zinv = this.z.redInvm();
30201 var zinv2 = zinv.redSqr();
30202 var ax = this.x.redMul(zinv2);
30203 var ay = this.y.redMul(zinv2).redMul(zinv);
30204
30205 return this.curve.point(ax, ay);
30206 };
30207
30208 JPoint.prototype.neg = function neg() {
30209 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
30210 };
30211
30212 JPoint.prototype.add = function add(p) {
30213 // O + P = P
30214 if (this.isInfinity())
30215 return p;
30216
30217 // P + O = P
30218 if (p.isInfinity())
30219 return this;
30220
30221 // 12M + 4S + 7A
30222 var pz2 = p.z.redSqr();
30223 var z2 = this.z.redSqr();
30224 var u1 = this.x.redMul(pz2);
30225 var u2 = p.x.redMul(z2);
30226 var s1 = this.y.redMul(pz2.redMul(p.z));
30227 var s2 = p.y.redMul(z2.redMul(this.z));
30228
30229 var h = u1.redSub(u2);
30230 var r = s1.redSub(s2);
30231 if (h.cmpn(0) === 0) {
30232 if (r.cmpn(0) !== 0)
30233 return this.curve.jpoint(null, null, null);
30234 else
30235 return this.dbl();
30236 }
30237
30238 var h2 = h.redSqr();
30239 var h3 = h2.redMul(h);
30240 var v = u1.redMul(h2);
30241
30242 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
30243 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
30244 var nz = this.z.redMul(p.z).redMul(h);
30245
30246 return this.curve.jpoint(nx, ny, nz);
30247 };
30248
30249 JPoint.prototype.mixedAdd = function mixedAdd(p) {
30250 // O + P = P
30251 if (this.isInfinity())
30252 return p.toJ();
30253
30254 // P + O = P
30255 if (p.isInfinity())
30256 return this;
30257
30258 // 8M + 3S + 7A
30259 var z2 = this.z.redSqr();
30260 var u1 = this.x;
30261 var u2 = p.x.redMul(z2);
30262 var s1 = this.y;
30263 var s2 = p.y.redMul(z2).redMul(this.z);
30264
30265 var h = u1.redSub(u2);
30266 var r = s1.redSub(s2);
30267 if (h.cmpn(0) === 0) {
30268 if (r.cmpn(0) !== 0)
30269 return this.curve.jpoint(null, null, null);
30270 else
30271 return this.dbl();
30272 }
30273
30274 var h2 = h.redSqr();
30275 var h3 = h2.redMul(h);
30276 var v = u1.redMul(h2);
30277
30278 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
30279 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
30280 var nz = this.z.redMul(h);
30281
30282 return this.curve.jpoint(nx, ny, nz);
30283 };
30284
30285 JPoint.prototype.dblp = function dblp(pow) {
30286 if (pow === 0)
30287 return this;
30288 if (this.isInfinity())
30289 return this;
30290 if (!pow)
30291 return this.dbl();
30292
30293 if (this.curve.zeroA || this.curve.threeA) {
30294 var r = this;
30295 for (var i = 0; i < pow; i++)
30296 r = r.dbl();
30297 return r;
30298 }
30299
30300 // 1M + 2S + 1A + N * (4S + 5M + 8A)
30301 // N = 1 => 6M + 6S + 9A
30302 var a = this.curve.a;
30303 var tinv = this.curve.tinv;
30304
30305 var jx = this.x;
30306 var jy = this.y;
30307 var jz = this.z;
30308 var jz4 = jz.redSqr().redSqr();
30309
30310 // Reuse results
30311 var jyd = jy.redAdd(jy);
30312 for (var i = 0; i < pow; i++) {
30313 var jx2 = jx.redSqr();
30314 var jyd2 = jyd.redSqr();
30315 var jyd4 = jyd2.redSqr();
30316 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
30317
30318 var t1 = jx.redMul(jyd2);
30319 var nx = c.redSqr().redISub(t1.redAdd(t1));
30320 var t2 = t1.redISub(nx);
30321 var dny = c.redMul(t2);
30322 dny = dny.redIAdd(dny).redISub(jyd4);
30323 var nz = jyd.redMul(jz);
30324 if (i + 1 < pow)
30325 jz4 = jz4.redMul(jyd4);
30326
30327 jx = nx;
30328 jz = nz;
30329 jyd = dny;
30330 }
30331
30332 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
30333 };
30334
30335 JPoint.prototype.dbl = function dbl() {
30336 if (this.isInfinity())
30337 return this;
30338
30339 if (this.curve.zeroA)
30340 return this._zeroDbl();
30341 else if (this.curve.threeA)
30342 return this._threeDbl();
30343 else
30344 return this._dbl();
30345 };
30346
30347 JPoint.prototype._zeroDbl = function _zeroDbl() {
30348 var nx;
30349 var ny;
30350 var nz;
30351 // Z = 1
30352 if (this.zOne) {
30353 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
30354 // #doubling-mdbl-2007-bl
30355 // 1M + 5S + 14A
30356
30357 // XX = X1^2
30358 var xx = this.x.redSqr();
30359 // YY = Y1^2
30360 var yy = this.y.redSqr();
30361 // YYYY = YY^2
30362 var yyyy = yy.redSqr();
30363 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
30364 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30365 s = s.redIAdd(s);
30366 // M = 3 * XX + a; a = 0
30367 var m = xx.redAdd(xx).redIAdd(xx);
30368 // T = M ^ 2 - 2*S
30369 var t = m.redSqr().redISub(s).redISub(s);
30370
30371 // 8 * YYYY
30372 var yyyy8 = yyyy.redIAdd(yyyy);
30373 yyyy8 = yyyy8.redIAdd(yyyy8);
30374 yyyy8 = yyyy8.redIAdd(yyyy8);
30375
30376 // X3 = T
30377 nx = t;
30378 // Y3 = M * (S - T) - 8 * YYYY
30379 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
30380 // Z3 = 2*Y1
30381 nz = this.y.redAdd(this.y);
30382 } else {
30383 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
30384 // #doubling-dbl-2009-l
30385 // 2M + 5S + 13A
30386
30387 // A = X1^2
30388 var a = this.x.redSqr();
30389 // B = Y1^2
30390 var b = this.y.redSqr();
30391 // C = B^2
30392 var c = b.redSqr();
30393 // D = 2 * ((X1 + B)^2 - A - C)
30394 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
30395 d = d.redIAdd(d);
30396 // E = 3 * A
30397 var e = a.redAdd(a).redIAdd(a);
30398 // F = E^2
30399 var f = e.redSqr();
30400
30401 // 8 * C
30402 var c8 = c.redIAdd(c);
30403 c8 = c8.redIAdd(c8);
30404 c8 = c8.redIAdd(c8);
30405
30406 // X3 = F - 2 * D
30407 nx = f.redISub(d).redISub(d);
30408 // Y3 = E * (D - X3) - 8 * C
30409 ny = e.redMul(d.redISub(nx)).redISub(c8);
30410 // Z3 = 2 * Y1 * Z1
30411 nz = this.y.redMul(this.z);
30412 nz = nz.redIAdd(nz);
30413 }
30414
30415 return this.curve.jpoint(nx, ny, nz);
30416 };
30417
30418 JPoint.prototype._threeDbl = function _threeDbl() {
30419 var nx;
30420 var ny;
30421 var nz;
30422 // Z = 1
30423 if (this.zOne) {
30424 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
30425 // #doubling-mdbl-2007-bl
30426 // 1M + 5S + 15A
30427
30428 // XX = X1^2
30429 var xx = this.x.redSqr();
30430 // YY = Y1^2
30431 var yy = this.y.redSqr();
30432 // YYYY = YY^2
30433 var yyyy = yy.redSqr();
30434 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
30435 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30436 s = s.redIAdd(s);
30437 // M = 3 * XX + a
30438 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
30439 // T = M^2 - 2 * S
30440 var t = m.redSqr().redISub(s).redISub(s);
30441 // X3 = T
30442 nx = t;
30443 // Y3 = M * (S - T) - 8 * YYYY
30444 var yyyy8 = yyyy.redIAdd(yyyy);
30445 yyyy8 = yyyy8.redIAdd(yyyy8);
30446 yyyy8 = yyyy8.redIAdd(yyyy8);
30447 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
30448 // Z3 = 2 * Y1
30449 nz = this.y.redAdd(this.y);
30450 } else {
30451 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
30452 // 3M + 5S
30453
30454 // delta = Z1^2
30455 var delta = this.z.redSqr();
30456 // gamma = Y1^2
30457 var gamma = this.y.redSqr();
30458 // beta = X1 * gamma
30459 var beta = this.x.redMul(gamma);
30460 // alpha = 3 * (X1 - delta) * (X1 + delta)
30461 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
30462 alpha = alpha.redAdd(alpha).redIAdd(alpha);
30463 // X3 = alpha^2 - 8 * beta
30464 var beta4 = beta.redIAdd(beta);
30465 beta4 = beta4.redIAdd(beta4);
30466 var beta8 = beta4.redAdd(beta4);
30467 nx = alpha.redSqr().redISub(beta8);
30468 // Z3 = (Y1 + Z1)^2 - gamma - delta
30469 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
30470 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
30471 var ggamma8 = gamma.redSqr();
30472 ggamma8 = ggamma8.redIAdd(ggamma8);
30473 ggamma8 = ggamma8.redIAdd(ggamma8);
30474 ggamma8 = ggamma8.redIAdd(ggamma8);
30475 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
30476 }
30477
30478 return this.curve.jpoint(nx, ny, nz);
30479 };
30480
30481 JPoint.prototype._dbl = function _dbl() {
30482 var a = this.curve.a;
30483
30484 // 4M + 6S + 10A
30485 var jx = this.x;
30486 var jy = this.y;
30487 var jz = this.z;
30488 var jz4 = jz.redSqr().redSqr();
30489
30490 var jx2 = jx.redSqr();
30491 var jy2 = jy.redSqr();
30492
30493 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
30494
30495 var jxd4 = jx.redAdd(jx);
30496 jxd4 = jxd4.redIAdd(jxd4);
30497 var t1 = jxd4.redMul(jy2);
30498 var nx = c.redSqr().redISub(t1.redAdd(t1));
30499 var t2 = t1.redISub(nx);
30500
30501 var jyd8 = jy2.redSqr();
30502 jyd8 = jyd8.redIAdd(jyd8);
30503 jyd8 = jyd8.redIAdd(jyd8);
30504 jyd8 = jyd8.redIAdd(jyd8);
30505 var ny = c.redMul(t2).redISub(jyd8);
30506 var nz = jy.redAdd(jy).redMul(jz);
30507
30508 return this.curve.jpoint(nx, ny, nz);
30509 };
30510
30511 JPoint.prototype.trpl = function trpl() {
30512 if (!this.curve.zeroA)
30513 return this.dbl().add(this);
30514
30515 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
30516 // 5M + 10S + ...
30517
30518 // XX = X1^2
30519 var xx = this.x.redSqr();
30520 // YY = Y1^2
30521 var yy = this.y.redSqr();
30522 // ZZ = Z1^2
30523 var zz = this.z.redSqr();
30524 // YYYY = YY^2
30525 var yyyy = yy.redSqr();
30526 // M = 3 * XX + a * ZZ2; a = 0
30527 var m = xx.redAdd(xx).redIAdd(xx);
30528 // MM = M^2
30529 var mm = m.redSqr();
30530 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
30531 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30532 e = e.redIAdd(e);
30533 e = e.redAdd(e).redIAdd(e);
30534 e = e.redISub(mm);
30535 // EE = E^2
30536 var ee = e.redSqr();
30537 // T = 16*YYYY
30538 var t = yyyy.redIAdd(yyyy);
30539 t = t.redIAdd(t);
30540 t = t.redIAdd(t);
30541 t = t.redIAdd(t);
30542 // U = (M + E)^2 - MM - EE - T
30543 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
30544 // X3 = 4 * (X1 * EE - 4 * YY * U)
30545 var yyu4 = yy.redMul(u);
30546 yyu4 = yyu4.redIAdd(yyu4);
30547 yyu4 = yyu4.redIAdd(yyu4);
30548 var nx = this.x.redMul(ee).redISub(yyu4);
30549 nx = nx.redIAdd(nx);
30550 nx = nx.redIAdd(nx);
30551 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
30552 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
30553 ny = ny.redIAdd(ny);
30554 ny = ny.redIAdd(ny);
30555 ny = ny.redIAdd(ny);
30556 // Z3 = (Z1 + E)^2 - ZZ - EE
30557 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
30558
30559 return this.curve.jpoint(nx, ny, nz);
30560 };
30561
30562 JPoint.prototype.mul = function mul(k, kbase) {
30563 k = new BN(k, kbase);
30564
30565 return this.curve._wnafMul(this, k);
30566 };
30567
30568 JPoint.prototype.eq = function eq(p) {
30569 if (p.type === 'affine')
30570 return this.eq(p.toJ());
30571
30572 if (this === p)
30573 return true;
30574
30575 // x1 * z2^2 == x2 * z1^2
30576 var z2 = this.z.redSqr();
30577 var pz2 = p.z.redSqr();
30578 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
30579 return false;
30580
30581 // y1 * z2^3 == y2 * z1^3
30582 var z3 = z2.redMul(this.z);
30583 var pz3 = pz2.redMul(p.z);
30584 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
30585 };
30586
30587 JPoint.prototype.eqXToP = function eqXToP(x) {
30588 var zs = this.z.redSqr();
30589 var rx = x.toRed(this.curve.red).redMul(zs);
30590 if (this.x.cmp(rx) === 0)
30591 return true;
30592
30593 var xc = x.clone();
30594 var t = this.curve.redN.redMul(zs);
30595 for (;;) {
30596 xc.iadd(this.curve.n);
30597 if (xc.cmp(this.curve.p) >= 0)
30598 return false;
30599
30600 rx.redIAdd(t);
30601 if (this.x.cmp(rx) === 0)
30602 return true;
30603 }
30604 return false;
30605 };
30606
30607 JPoint.prototype.inspect = function inspect() {
30608 if (this.isInfinity())
30609 return '<EC JPoint Infinity>';
30610 return '<EC JPoint x: ' + this.x.toString(16, 2) +
30611 ' y: ' + this.y.toString(16, 2) +
30612 ' z: ' + this.z.toString(16, 2) + '>';
30613 };
30614
30615 JPoint.prototype.isInfinity = function isInfinity() {
30616 // XXX This code assumes that zero is always zero in red
30617 return this.z.cmpn(0) === 0;
30618 };
30619
30620 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
30621 'use strict';
30622
30623 var curves = exports;
30624
30625 var hash = require('hash.js');
30626 var elliptic = require('../elliptic');
30627
30628 var assert = elliptic.utils.assert;
30629
30630 function PresetCurve(options) {
30631 if (options.type === 'short')
30632 this.curve = new elliptic.curve.short(options);
30633 else if (options.type === 'edwards')
30634 this.curve = new elliptic.curve.edwards(options);
30635 else
30636 this.curve = new elliptic.curve.mont(options);
30637 this.g = this.curve.g;
30638 this.n = this.curve.n;
30639 this.hash = options.hash;
30640
30641 assert(this.g.validate(), 'Invalid curve');
30642 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
30643 }
30644 curves.PresetCurve = PresetCurve;
30645
30646 function defineCurve(name, options) {
30647 Object.defineProperty(curves, name, {
30648 configurable: true,
30649 enumerable: true,
30650 get: function() {
30651 var curve = new PresetCurve(options);
30652 Object.defineProperty(curves, name, {
30653 configurable: true,
30654 enumerable: true,
30655 value: curve
30656 });
30657 return curve;
30658 }
30659 });
30660 }
30661
30662 defineCurve('p192', {
30663 type: 'short',
30664 prime: 'p192',
30665 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
30666 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
30667 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
30668 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
30669 hash: hash.sha256,
30670 gRed: false,
30671 g: [
30672 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
30673 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
30674 ]
30675 });
30676
30677 defineCurve('p224', {
30678 type: 'short',
30679 prime: 'p224',
30680 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
30681 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
30682 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
30683 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
30684 hash: hash.sha256,
30685 gRed: false,
30686 g: [
30687 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
30688 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
30689 ]
30690 });
30691
30692 defineCurve('p256', {
30693 type: 'short',
30694 prime: null,
30695 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
30696 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
30697 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
30698 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
30699 hash: hash.sha256,
30700 gRed: false,
30701 g: [
30702 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
30703 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
30704 ]
30705 });
30706
30707 defineCurve('p384', {
30708 type: 'short',
30709 prime: null,
30710 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30711 'fffffffe ffffffff 00000000 00000000 ffffffff',
30712 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30713 'fffffffe ffffffff 00000000 00000000 fffffffc',
30714 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
30715 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
30716 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
30717 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
30718 hash: hash.sha384,
30719 gRed: false,
30720 g: [
30721 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
30722 '5502f25d bf55296c 3a545e38 72760ab7',
30723 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
30724 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
30725 ]
30726 });
30727
30728 defineCurve('p521', {
30729 type: 'short',
30730 prime: null,
30731 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30732 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30733 'ffffffff ffffffff ffffffff ffffffff ffffffff',
30734 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30735 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30736 'ffffffff ffffffff ffffffff ffffffff fffffffc',
30737 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
30738 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
30739 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
30740 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30741 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
30742 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
30743 hash: hash.sha512,
30744 gRed: false,
30745 g: [
30746 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
30747 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
30748 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
30749 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
30750 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
30751 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
30752 ]
30753 });
30754
30755 defineCurve('curve25519', {
30756 type: 'mont',
30757 prime: 'p25519',
30758 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
30759 a: '76d06',
30760 b: '1',
30761 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
30762 hash: hash.sha256,
30763 gRed: false,
30764 g: [
30765 '9'
30766 ]
30767 });
30768
30769 defineCurve('ed25519', {
30770 type: 'edwards',
30771 prime: 'p25519',
30772 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
30773 a: '-1',
30774 c: '1',
30775 // -121665 * (121666^(-1)) (mod P)
30776 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
30777 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
30778 hash: hash.sha256,
30779 gRed: false,
30780 g: [
30781 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
30782
30783 // 4/5
30784 '6666666666666666666666666666666666666666666666666666666666666658'
30785 ]
30786 });
30787
30788 var pre;
30789 try {
30790 pre = require('./precomputed/secp256k1');
30791 } catch (e) {
30792 pre = undefined;
30793 }
30794
30795 defineCurve('secp256k1', {
30796 type: 'short',
30797 prime: 'k256',
30798 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
30799 a: '0',
30800 b: '7',
30801 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
30802 h: '1',
30803 hash: hash.sha256,
30804
30805 // Precomputed endomorphism
30806 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
30807 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
30808 basis: [
30809 {
30810 a: '3086d221a7d46bcde86c90e49284eb15',
30811 b: '-e4437ed6010e88286f547fa90abfe4c3'
30812 },
30813 {
30814 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
30815 b: '3086d221a7d46bcde86c90e49284eb15'
30816 }
30817 ],
30818
30819 gRed: false,
30820 g: [
30821 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
30822 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
30823 pre
30824 ]
30825 });
30826
30827 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
30828 'use strict';
30829
30830 var BN = require('bn.js');
30831 var elliptic = require('../../elliptic');
30832 var utils = elliptic.utils;
30833 var assert = utils.assert;
30834
30835 var KeyPair = require('./key');
30836 var Signature = require('./signature');
30837
30838 function EC(options) {
30839 if (!(this instanceof EC))
30840 return new EC(options);
30841
30842 // Shortcut `elliptic.ec(curve-name)`
30843 if (typeof options === 'string') {
30844 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
30845
30846 options = elliptic.curves[options];
30847 }
30848
30849 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
30850 if (options instanceof elliptic.curves.PresetCurve)
30851 options = { curve: options };
30852
30853 this.curve = options.curve.curve;
30854 this.n = this.curve.n;
30855 this.nh = this.n.ushrn(1);
30856 this.g = this.curve.g;
30857
30858 // Point on curve
30859 this.g = options.curve.g;
30860 this.g.precompute(options.curve.n.bitLength() + 1);
30861
30862 // Hash for function for DRBG
30863 this.hash = options.hash || options.curve.hash;
30864 }
30865 module.exports = EC;
30866
30867 EC.prototype.keyPair = function keyPair(options) {
30868 return new KeyPair(this, options);
30869 };
30870
30871 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
30872 return KeyPair.fromPrivate(this, priv, enc);
30873 };
30874
30875 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
30876 return KeyPair.fromPublic(this, pub, enc);
30877 };
30878
30879 EC.prototype.genKeyPair = function genKeyPair(options) {
30880 if (!options)
30881 options = {};
30882
30883 // Instantiate Hmac_DRBG
30884 var drbg = new elliptic.hmacDRBG({
30885 hash: this.hash,
30886 pers: options.pers,
30887 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
30888 nonce: this.n.toArray()
30889 });
30890
30891 var bytes = this.n.byteLength();
30892 var ns2 = this.n.sub(new BN(2));
30893 do {
30894 var priv = new BN(drbg.generate(bytes));
30895 if (priv.cmp(ns2) > 0)
30896 continue;
30897
30898 priv.iaddn(1);
30899 return this.keyFromPrivate(priv);
30900 } while (true);
30901 };
30902
30903 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
30904 var delta = msg.byteLength() * 8 - this.n.bitLength();
30905 if (delta > 0)
30906 msg = msg.ushrn(delta);
30907 if (!truncOnly && msg.cmp(this.n) >= 0)
30908 return msg.sub(this.n);
30909 else
30910 return msg;
30911 };
30912
30913 EC.prototype.sign = function sign(msg, key, enc, options) {
30914 if (typeof enc === 'object') {
30915 options = enc;
30916 enc = null;
30917 }
30918 if (!options)
30919 options = {};
30920
30921 key = this.keyFromPrivate(key, enc);
30922 msg = this._truncateToN(new BN(msg, 16));
30923
30924 // Zero-extend key to provide enough entropy
30925 var bytes = this.n.byteLength();
30926 var bkey = key.getPrivate().toArray('be', bytes);
30927
30928 // Zero-extend nonce to have the same byte size as N
30929 var nonce = msg.toArray('be', bytes);
30930
30931 // Instantiate Hmac_DRBG
30932 var drbg = new elliptic.hmacDRBG({
30933 hash: this.hash,
30934 entropy: bkey,
30935 nonce: nonce,
30936 pers: options.pers,
30937 persEnc: options.persEnc
30938 });
30939
30940 // Number of bytes to generate
30941 var ns1 = this.n.sub(new BN(1));
30942
30943 for (var iter = 0; true; iter++) {
30944 var k = options.k ?
30945 options.k(iter) :
30946 new BN(drbg.generate(this.n.byteLength()));
30947 k = this._truncateToN(k, true);
30948 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
30949 continue;
30950
30951 var kp = this.g.mul(k);
30952 if (kp.isInfinity())
30953 continue;
30954
30955 var kpX = kp.getX();
30956 var r = kpX.umod(this.n);
30957 if (r.cmpn(0) === 0)
30958 continue;
30959
30960 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
30961 s = s.umod(this.n);
30962 if (s.cmpn(0) === 0)
30963 continue;
30964
30965 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
30966 (kpX.cmp(r) !== 0 ? 2 : 0);
30967
30968 // Use complement of `s`, if it is > `n / 2`
30969 if (options.canonical && s.cmp(this.nh) > 0) {
30970 s = this.n.sub(s);
30971 recoveryParam ^= 1;
30972 }
30973
30974 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
30975 }
30976 };
30977
30978 EC.prototype.verify = function verify(msg, signature, key, enc) {
30979 msg = this._truncateToN(new BN(msg, 16));
30980 key = this.keyFromPublic(key, enc);
30981 signature = new Signature(signature, 'hex');
30982
30983 // Perform primitive values validation
30984 var r = signature.r;
30985 var s = signature.s;
30986 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
30987 return false;
30988 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
30989 return false;
30990
30991 // Validate signature
30992 var sinv = s.invm(this.n);
30993 var u1 = sinv.mul(msg).umod(this.n);
30994 var u2 = sinv.mul(r).umod(this.n);
30995
30996 if (!this.curve._maxwellTrick) {
30997 var p = this.g.mulAdd(u1, key.getPublic(), u2);
30998 if (p.isInfinity())
30999 return false;
31000
31001 return p.getX().umod(this.n).cmp(r) === 0;
31002 }
31003
31004 // NOTE: Greg Maxwell's trick, inspired by:
31005 // https://git.io/vad3K
31006
31007 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
31008 if (p.isInfinity())
31009 return false;
31010
31011 // Compare `p.x` of Jacobian point with `r`,
31012 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
31013 // inverse of `p.z^2`
31014 return p.eqXToP(r);
31015 };
31016
31017 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
31018 assert((3 & j) === j, 'The recovery param is more than two bits');
31019 signature = new Signature(signature, enc);
31020
31021 var n = this.n;
31022 var e = new BN(msg);
31023 var r = signature.r;
31024 var s = signature.s;
31025
31026 // A set LSB signifies that the y-coordinate is odd
31027 var isYOdd = j & 1;
31028 var isSecondKey = j >> 1;
31029 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
31030 throw new Error('Unable to find sencond key candinate');
31031
31032 // 1.1. Let x = r + jn.
31033 if (isSecondKey)
31034 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
31035 else
31036 r = this.curve.pointFromX(r, isYOdd);
31037
31038 var rInv = signature.r.invm(n);
31039 var s1 = n.sub(e).mul(rInv).umod(n);
31040 var s2 = s.mul(rInv).umod(n);
31041
31042 // 1.6.1 Compute Q = r^-1 (sR - eG)
31043 // Q = r^-1 (sR + -eG)
31044 return this.g.mulAdd(s1, r, s2);
31045 };
31046
31047 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
31048 signature = new Signature(signature, enc);
31049 if (signature.recoveryParam !== null)
31050 return signature.recoveryParam;
31051
31052 for (var i = 0; i < 4; i++) {
31053 var Qprime;
31054 try {
31055 Qprime = this.recoverPubKey(e, signature, i);
31056 } catch (e) {
31057 continue;
31058 }
31059
31060 if (Qprime.eq(Q))
31061 return i;
31062 }
31063 throw new Error('Unable to find valid recovery factor');
31064 };
31065
31066 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
31067 'use strict';
31068
31069 var BN = require('bn.js');
31070 var elliptic = require('../../elliptic');
31071 var utils = elliptic.utils;
31072 var assert = utils.assert;
31073
31074 function KeyPair(ec, options) {
31075 this.ec = ec;
31076 this.priv = null;
31077 this.pub = null;
31078
31079 // KeyPair(ec, { priv: ..., pub: ... })
31080 if (options.priv)
31081 this._importPrivate(options.priv, options.privEnc);
31082 if (options.pub)
31083 this._importPublic(options.pub, options.pubEnc);
31084 }
31085 module.exports = KeyPair;
31086
31087 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
31088 if (pub instanceof KeyPair)
31089 return pub;
31090
31091 return new KeyPair(ec, {
31092 pub: pub,
31093 pubEnc: enc
31094 });
31095 };
31096
31097 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
31098 if (priv instanceof KeyPair)
31099 return priv;
31100
31101 return new KeyPair(ec, {
31102 priv: priv,
31103 privEnc: enc
31104 });
31105 };
31106
31107 KeyPair.prototype.validate = function validate() {
31108 var pub = this.getPublic();
31109
31110 if (pub.isInfinity())
31111 return { result: false, reason: 'Invalid public key' };
31112 if (!pub.validate())
31113 return { result: false, reason: 'Public key is not a point' };
31114 if (!pub.mul(this.ec.curve.n).isInfinity())
31115 return { result: false, reason: 'Public key * N != O' };
31116
31117 return { result: true, reason: null };
31118 };
31119
31120 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
31121 // compact is optional argument
31122 if (typeof compact === 'string') {
31123 enc = compact;
31124 compact = null;
31125 }
31126
31127 if (!this.pub)
31128 this.pub = this.ec.g.mul(this.priv);
31129
31130 if (!enc)
31131 return this.pub;
31132
31133 return this.pub.encode(enc, compact);
31134 };
31135
31136 KeyPair.prototype.getPrivate = function getPrivate(enc) {
31137 if (enc === 'hex')
31138 return this.priv.toString(16, 2);
31139 else
31140 return this.priv;
31141 };
31142
31143 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
31144 this.priv = new BN(key, enc || 16);
31145
31146 // Ensure that the priv won't be bigger than n, otherwise we may fail
31147 // in fixed multiplication method
31148 this.priv = this.priv.umod(this.ec.curve.n);
31149 };
31150
31151 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
31152 if (key.x || key.y) {
31153 // Montgomery points only have an `x` coordinate.
31154 // Weierstrass/Edwards points on the other hand have both `x` and
31155 // `y` coordinates.
31156 if (this.ec.curve.type === 'mont') {
31157 assert(key.x, 'Need x coordinate');
31158 } else if (this.ec.curve.type === 'short' ||
31159 this.ec.curve.type === 'edwards') {
31160 assert(key.x && key.y, 'Need both x and y coordinate');
31161 }
31162 this.pub = this.ec.curve.point(key.x, key.y);
31163 return;
31164 }
31165 this.pub = this.ec.curve.decodePoint(key, enc);
31166 };
31167
31168 // ECDH
31169 KeyPair.prototype.derive = function derive(pub) {
31170 return pub.mul(this.priv).getX();
31171 };
31172
31173 // ECDSA
31174 KeyPair.prototype.sign = function sign(msg, enc, options) {
31175 return this.ec.sign(msg, this, enc, options);
31176 };
31177
31178 KeyPair.prototype.verify = function verify(msg, signature) {
31179 return this.ec.verify(msg, signature, this);
31180 };
31181
31182 KeyPair.prototype.inspect = function inspect() {
31183 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
31184 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
31185 };
31186
31187 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
31188 'use strict';
31189
31190 var BN = require('bn.js');
31191
31192 var elliptic = require('../../elliptic');
31193 var utils = elliptic.utils;
31194 var assert = utils.assert;
31195
31196 function Signature(options, enc) {
31197 if (options instanceof Signature)
31198 return options;
31199
31200 if (this._importDER(options, enc))
31201 return;
31202
31203 assert(options.r && options.s, 'Signature without r or s');
31204 this.r = new BN(options.r, 16);
31205 this.s = new BN(options.s, 16);
31206 if (options.recoveryParam === undefined)
31207 this.recoveryParam = null;
31208 else
31209 this.recoveryParam = options.recoveryParam;
31210 }
31211 module.exports = Signature;
31212
31213 function Position() {
31214 this.place = 0;
31215 }
31216
31217 function getLength(buf, p) {
31218 var initial = buf[p.place++];
31219 if (!(initial & 0x80)) {
31220 return initial;
31221 }
31222 var octetLen = initial & 0xf;
31223 var val = 0;
31224 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
31225 val <<= 8;
31226 val |= buf[off];
31227 }
31228 p.place = off;
31229 return val;
31230 }
31231
31232 function rmPadding(buf) {
31233 var i = 0;
31234 var len = buf.length - 1;
31235 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
31236 i++;
31237 }
31238 if (i === 0) {
31239 return buf;
31240 }
31241 return buf.slice(i);
31242 }
31243
31244 Signature.prototype._importDER = function _importDER(data, enc) {
31245 data = utils.toArray(data, enc);
31246 var p = new Position();
31247 if (data[p.place++] !== 0x30) {
31248 return false;
31249 }
31250 var len = getLength(data, p);
31251 if ((len + p.place) !== data.length) {
31252 return false;
31253 }
31254 if (data[p.place++] !== 0x02) {
31255 return false;
31256 }
31257 var rlen = getLength(data, p);
31258 var r = data.slice(p.place, rlen + p.place);
31259 p.place += rlen;
31260 if (data[p.place++] !== 0x02) {
31261 return false;
31262 }
31263 var slen = getLength(data, p);
31264 if (data.length !== slen + p.place) {
31265 return false;
31266 }
31267 var s = data.slice(p.place, slen + p.place);
31268 if (r[0] === 0 && (r[1] & 0x80)) {
31269 r = r.slice(1);
31270 }
31271 if (s[0] === 0 && (s[1] & 0x80)) {
31272 s = s.slice(1);
31273 }
31274
31275 this.r = new BN(r);
31276 this.s = new BN(s);
31277 this.recoveryParam = null;
31278
31279 return true;
31280 };
31281
31282 function constructLength(arr, len) {
31283 if (len < 0x80) {
31284 arr.push(len);
31285 return;
31286 }
31287 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
31288 arr.push(octets | 0x80);
31289 while (--octets) {
31290 arr.push((len >>> (octets << 3)) & 0xff);
31291 }
31292 arr.push(len);
31293 }
31294
31295 Signature.prototype.toDER = function toDER(enc) {
31296 var r = this.r.toArray();
31297 var s = this.s.toArray();
31298
31299 // Pad values
31300 if (r[0] & 0x80)
31301 r = [ 0 ].concat(r);
31302 // Pad values
31303 if (s[0] & 0x80)
31304 s = [ 0 ].concat(s);
31305
31306 r = rmPadding(r);
31307 s = rmPadding(s);
31308
31309 while (!s[0] && !(s[1] & 0x80)) {
31310 s = s.slice(1);
31311 }
31312 var arr = [ 0x02 ];
31313 constructLength(arr, r.length);
31314 arr = arr.concat(r);
31315 arr.push(0x02);
31316 constructLength(arr, s.length);
31317 var backHalf = arr.concat(s);
31318 var res = [ 0x30 ];
31319 constructLength(res, backHalf.length);
31320 res = res.concat(backHalf);
31321 return utils.encode(res, enc);
31322 };
31323
31324 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
31325 'use strict';
31326
31327 var hash = require('hash.js');
31328 var elliptic = require('../../elliptic');
31329 var utils = elliptic.utils;
31330 var assert = utils.assert;
31331 var parseBytes = utils.parseBytes;
31332 var KeyPair = require('./key');
31333 var Signature = require('./signature');
31334
31335 function EDDSA(curve) {
31336 assert(curve === 'ed25519', 'only tested with ed25519 so far');
31337
31338 if (!(this instanceof EDDSA))
31339 return new EDDSA(curve);
31340
31341 var curve = elliptic.curves[curve].curve;
31342 this.curve = curve;
31343 this.g = curve.g;
31344 this.g.precompute(curve.n.bitLength() + 1);
31345
31346 this.pointClass = curve.point().constructor;
31347 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
31348 this.hash = hash.sha512;
31349 }
31350
31351 module.exports = EDDSA;
31352
31353 /**
31354 * @param {Array|String} message - message bytes
31355 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
31356 * @returns {Signature} - signature
31357 */
31358 EDDSA.prototype.sign = function sign(message, secret) {
31359 message = parseBytes(message);
31360 var key = this.keyFromSecret(secret);
31361 var r = this.hashInt(key.messagePrefix(), message);
31362 var R = this.g.mul(r);
31363 var Rencoded = this.encodePoint(R);
31364 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
31365 .mul(key.priv());
31366 var S = r.add(s_).umod(this.curve.n);
31367 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
31368 };
31369
31370 /**
31371 * @param {Array} message - message bytes
31372 * @param {Array|String|Signature} sig - sig bytes
31373 * @param {Array|String|Point|KeyPair} pub - public key
31374 * @returns {Boolean} - true if public key matches sig of message
31375 */
31376 EDDSA.prototype.verify = function verify(message, sig, pub) {
31377 message = parseBytes(message);
31378 sig = this.makeSignature(sig);
31379 var key = this.keyFromPublic(pub);
31380 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
31381 var SG = this.g.mul(sig.S());
31382 var RplusAh = sig.R().add(key.pub().mul(h));
31383 return RplusAh.eq(SG);
31384 };
31385
31386 EDDSA.prototype.hashInt = function hashInt() {
31387 var hash = this.hash();
31388 for (var i = 0; i < arguments.length; i++)
31389 hash.update(arguments[i]);
31390 return utils.intFromLE(hash.digest()).umod(this.curve.n);
31391 };
31392
31393 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
31394 return KeyPair.fromPublic(this, pub);
31395 };
31396
31397 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
31398 return KeyPair.fromSecret(this, secret);
31399 };
31400
31401 EDDSA.prototype.makeSignature = function makeSignature(sig) {
31402 if (sig instanceof Signature)
31403 return sig;
31404 return new Signature(this, sig);
31405 };
31406
31407 /**
31408 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
31409 *
31410 * EDDSA defines methods for encoding and decoding points and integers. These are
31411 * helper convenience methods, that pass along to utility functions implied
31412 * parameters.
31413 *
31414 */
31415 EDDSA.prototype.encodePoint = function encodePoint(point) {
31416 var enc = point.getY().toArray('le', this.encodingLength);
31417 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
31418 return enc;
31419 };
31420
31421 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
31422 bytes = utils.parseBytes(bytes);
31423
31424 var lastIx = bytes.length - 1;
31425 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
31426 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
31427
31428 var y = utils.intFromLE(normed);
31429 return this.curve.pointFromY(y, xIsOdd);
31430 };
31431
31432 EDDSA.prototype.encodeInt = function encodeInt(num) {
31433 return num.toArray('le', this.encodingLength);
31434 };
31435
31436 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
31437 return utils.intFromLE(bytes);
31438 };
31439
31440 EDDSA.prototype.isPoint = function isPoint(val) {
31441 return val instanceof this.pointClass;
31442 };
31443
31444 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
31445 'use strict';
31446
31447 var elliptic = require('../../elliptic');
31448 var utils = elliptic.utils;
31449 var assert = utils.assert;
31450 var parseBytes = utils.parseBytes;
31451 var cachedProperty = utils.cachedProperty;
31452
31453 /**
31454 * @param {EDDSA} eddsa - instance
31455 * @param {Object} params - public/private key parameters
31456 *
31457 * @param {Array<Byte>} [params.secret] - secret seed bytes
31458 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
31459 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
31460 *
31461 */
31462 function KeyPair(eddsa, params) {
31463 this.eddsa = eddsa;
31464 this._secret = parseBytes(params.secret);
31465 if (eddsa.isPoint(params.pub))
31466 this._pub = params.pub;
31467 else
31468 this._pubBytes = parseBytes(params.pub);
31469 }
31470
31471 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
31472 if (pub instanceof KeyPair)
31473 return pub;
31474 return new KeyPair(eddsa, { pub: pub });
31475 };
31476
31477 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
31478 if (secret instanceof KeyPair)
31479 return secret;
31480 return new KeyPair(eddsa, { secret: secret });
31481 };
31482
31483 KeyPair.prototype.secret = function secret() {
31484 return this._secret;
31485 };
31486
31487 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
31488 return this.eddsa.encodePoint(this.pub());
31489 });
31490
31491 cachedProperty(KeyPair, 'pub', function pub() {
31492 if (this._pubBytes)
31493 return this.eddsa.decodePoint(this._pubBytes);
31494 return this.eddsa.g.mul(this.priv());
31495 });
31496
31497 cachedProperty(KeyPair, 'privBytes', function privBytes() {
31498 var eddsa = this.eddsa;
31499 var hash = this.hash();
31500 var lastIx = eddsa.encodingLength - 1;
31501
31502 var a = hash.slice(0, eddsa.encodingLength);
31503 a[0] &= 248;
31504 a[lastIx] &= 127;
31505 a[lastIx] |= 64;
31506
31507 return a;
31508 });
31509
31510 cachedProperty(KeyPair, 'priv', function priv() {
31511 return this.eddsa.decodeInt(this.privBytes());
31512 });
31513
31514 cachedProperty(KeyPair, 'hash', function hash() {
31515 return this.eddsa.hash().update(this.secret()).digest();
31516 });
31517
31518 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
31519 return this.hash().slice(this.eddsa.encodingLength);
31520 });
31521
31522 KeyPair.prototype.sign = function sign(message) {
31523 assert(this._secret, 'KeyPair can only verify');
31524 return this.eddsa.sign(message, this);
31525 };
31526
31527 KeyPair.prototype.verify = function verify(message, sig) {
31528 return this.eddsa.verify(message, sig, this);
31529 };
31530
31531 KeyPair.prototype.getSecret = function getSecret(enc) {
31532 assert(this._secret, 'KeyPair is public only');
31533 return utils.encode(this.secret(), enc);
31534 };
31535
31536 KeyPair.prototype.getPublic = function getPublic(enc) {
31537 return utils.encode(this.pubBytes(), enc);
31538 };
31539
31540 module.exports = KeyPair;
31541
31542 },{"../../elliptic":39}],51:[function(require,module,exports){
31543 'use strict';
31544
31545 var BN = require('bn.js');
31546 var elliptic = require('../../elliptic');
31547 var utils = elliptic.utils;
31548 var assert = utils.assert;
31549 var cachedProperty = utils.cachedProperty;
31550 var parseBytes = utils.parseBytes;
31551
31552 /**
31553 * @param {EDDSA} eddsa - eddsa instance
31554 * @param {Array<Bytes>|Object} sig -
31555 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
31556 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
31557 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
31558 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
31559 */
31560 function Signature(eddsa, sig) {
31561 this.eddsa = eddsa;
31562
31563 if (typeof sig !== 'object')
31564 sig = parseBytes(sig);
31565
31566 if (Array.isArray(sig)) {
31567 sig = {
31568 R: sig.slice(0, eddsa.encodingLength),
31569 S: sig.slice(eddsa.encodingLength)
31570 };
31571 }
31572
31573 assert(sig.R && sig.S, 'Signature without R or S');
31574
31575 if (eddsa.isPoint(sig.R))
31576 this._R = sig.R;
31577 if (sig.S instanceof BN)
31578 this._S = sig.S;
31579
31580 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
31581 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
31582 }
31583
31584 cachedProperty(Signature, 'S', function S() {
31585 return this.eddsa.decodeInt(this.Sencoded());
31586 });
31587
31588 cachedProperty(Signature, 'R', function R() {
31589 return this.eddsa.decodePoint(this.Rencoded());
31590 });
31591
31592 cachedProperty(Signature, 'Rencoded', function Rencoded() {
31593 return this.eddsa.encodePoint(this.R());
31594 });
31595
31596 cachedProperty(Signature, 'Sencoded', function Sencoded() {
31597 return this.eddsa.encodeInt(this.S());
31598 });
31599
31600 Signature.prototype.toBytes = function toBytes() {
31601 return this.Rencoded().concat(this.Sencoded());
31602 };
31603
31604 Signature.prototype.toHex = function toHex() {
31605 return utils.encode(this.toBytes(), 'hex').toUpperCase();
31606 };
31607
31608 module.exports = Signature;
31609
31610 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
31611 'use strict';
31612
31613 var hash = require('hash.js');
31614 var elliptic = require('../elliptic');
31615 var utils = elliptic.utils;
31616 var assert = utils.assert;
31617
31618 function HmacDRBG(options) {
31619 if (!(this instanceof HmacDRBG))
31620 return new HmacDRBG(options);
31621 this.hash = options.hash;
31622 this.predResist = !!options.predResist;
31623
31624 this.outLen = this.hash.outSize;
31625 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
31626
31627 this.reseed = null;
31628 this.reseedInterval = null;
31629 this.K = null;
31630 this.V = null;
31631
31632 var entropy = utils.toArray(options.entropy, options.entropyEnc);
31633 var nonce = utils.toArray(options.nonce, options.nonceEnc);
31634 var pers = utils.toArray(options.pers, options.persEnc);
31635 assert(entropy.length >= (this.minEntropy / 8),
31636 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
31637 this._init(entropy, nonce, pers);
31638 }
31639 module.exports = HmacDRBG;
31640
31641 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
31642 var seed = entropy.concat(nonce).concat(pers);
31643
31644 this.K = new Array(this.outLen / 8);
31645 this.V = new Array(this.outLen / 8);
31646 for (var i = 0; i < this.V.length; i++) {
31647 this.K[i] = 0x00;
31648 this.V[i] = 0x01;
31649 }
31650
31651 this._update(seed);
31652 this.reseed = 1;
31653 this.reseedInterval = 0x1000000000000; // 2^48
31654 };
31655
31656 HmacDRBG.prototype._hmac = function hmac() {
31657 return new hash.hmac(this.hash, this.K);
31658 };
31659
31660 HmacDRBG.prototype._update = function update(seed) {
31661 var kmac = this._hmac()
31662 .update(this.V)
31663 .update([ 0x00 ]);
31664 if (seed)
31665 kmac = kmac.update(seed);
31666 this.K = kmac.digest();
31667 this.V = this._hmac().update(this.V).digest();
31668 if (!seed)
31669 return;
31670
31671 this.K = this._hmac()
31672 .update(this.V)
31673 .update([ 0x01 ])
31674 .update(seed)
31675 .digest();
31676 this.V = this._hmac().update(this.V).digest();
31677 };
31678
31679 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
31680 // Optional entropy enc
31681 if (typeof entropyEnc !== 'string') {
31682 addEnc = add;
31683 add = entropyEnc;
31684 entropyEnc = null;
31685 }
31686
31687 entropy = utils.toBuffer(entropy, entropyEnc);
31688 add = utils.toBuffer(add, addEnc);
31689
31690 assert(entropy.length >= (this.minEntropy / 8),
31691 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
31692
31693 this._update(entropy.concat(add || []));
31694 this.reseed = 1;
31695 };
31696
31697 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
31698 if (this.reseed > this.reseedInterval)
31699 throw new Error('Reseed is required');
31700
31701 // Optional encoding
31702 if (typeof enc !== 'string') {
31703 addEnc = add;
31704 add = enc;
31705 enc = null;
31706 }
31707
31708 // Optional additional data
31709 if (add) {
31710 add = utils.toArray(add, addEnc);
31711 this._update(add);
31712 }
31713
31714 var temp = [];
31715 while (temp.length < len) {
31716 this.V = this._hmac().update(this.V).digest();
31717 temp = temp.concat(this.V);
31718 }
31719
31720 var res = temp.slice(0, len);
31721 this._update(add);
31722 this.reseed++;
31723 return utils.encode(res, enc);
31724 };
31725
31726 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
31727 module.exports = {
31728 doubles: {
31729 step: 4,
31730 points: [
31731 [
31732 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
31733 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
31734 ],
31735 [
31736 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
31737 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
31738 ],
31739 [
31740 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
31741 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
31742 ],
31743 [
31744 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
31745 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
31746 ],
31747 [
31748 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
31749 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
31750 ],
31751 [
31752 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
31753 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
31754 ],
31755 [
31756 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
31757 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
31758 ],
31759 [
31760 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
31761 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
31762 ],
31763 [
31764 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
31765 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
31766 ],
31767 [
31768 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
31769 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
31770 ],
31771 [
31772 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
31773 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
31774 ],
31775 [
31776 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
31777 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
31778 ],
31779 [
31780 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
31781 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
31782 ],
31783 [
31784 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
31785 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
31786 ],
31787 [
31788 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
31789 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
31790 ],
31791 [
31792 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
31793 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
31794 ],
31795 [
31796 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
31797 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
31798 ],
31799 [
31800 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
31801 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
31802 ],
31803 [
31804 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
31805 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
31806 ],
31807 [
31808 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
31809 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
31810 ],
31811 [
31812 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
31813 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
31814 ],
31815 [
31816 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
31817 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
31818 ],
31819 [
31820 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
31821 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
31822 ],
31823 [
31824 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
31825 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
31826 ],
31827 [
31828 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
31829 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
31830 ],
31831 [
31832 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
31833 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
31834 ],
31835 [
31836 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
31837 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
31838 ],
31839 [
31840 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
31841 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
31842 ],
31843 [
31844 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
31845 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
31846 ],
31847 [
31848 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
31849 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
31850 ],
31851 [
31852 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
31853 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
31854 ],
31855 [
31856 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
31857 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
31858 ],
31859 [
31860 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
31861 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
31862 ],
31863 [
31864 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
31865 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
31866 ],
31867 [
31868 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
31869 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
31870 ],
31871 [
31872 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
31873 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
31874 ],
31875 [
31876 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
31877 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
31878 ],
31879 [
31880 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
31881 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
31882 ],
31883 [
31884 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
31885 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
31886 ],
31887 [
31888 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
31889 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
31890 ],
31891 [
31892 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
31893 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
31894 ],
31895 [
31896 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
31897 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
31898 ],
31899 [
31900 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
31901 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
31902 ],
31903 [
31904 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
31905 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
31906 ],
31907 [
31908 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
31909 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
31910 ],
31911 [
31912 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
31913 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
31914 ],
31915 [
31916 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
31917 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
31918 ],
31919 [
31920 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
31921 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
31922 ],
31923 [
31924 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
31925 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
31926 ],
31927 [
31928 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
31929 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
31930 ],
31931 [
31932 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
31933 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
31934 ],
31935 [
31936 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
31937 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
31938 ],
31939 [
31940 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
31941 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
31942 ],
31943 [
31944 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
31945 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
31946 ],
31947 [
31948 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
31949 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
31950 ],
31951 [
31952 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
31953 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
31954 ],
31955 [
31956 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
31957 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
31958 ],
31959 [
31960 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
31961 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
31962 ],
31963 [
31964 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
31965 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
31966 ],
31967 [
31968 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
31969 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
31970 ],
31971 [
31972 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
31973 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
31974 ],
31975 [
31976 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
31977 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
31978 ],
31979 [
31980 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
31981 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
31982 ],
31983 [
31984 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
31985 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
31986 ],
31987 [
31988 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
31989 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
31990 ]
31991 ]
31992 },
31993 naf: {
31994 wnd: 7,
31995 points: [
31996 [
31997 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
31998 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
31999 ],
32000 [
32001 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
32002 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
32003 ],
32004 [
32005 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
32006 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
32007 ],
32008 [
32009 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
32010 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
32011 ],
32012 [
32013 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
32014 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
32015 ],
32016 [
32017 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
32018 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
32019 ],
32020 [
32021 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
32022 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
32023 ],
32024 [
32025 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
32026 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
32027 ],
32028 [
32029 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
32030 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
32031 ],
32032 [
32033 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
32034 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
32035 ],
32036 [
32037 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
32038 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
32039 ],
32040 [
32041 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
32042 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
32043 ],
32044 [
32045 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
32046 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
32047 ],
32048 [
32049 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
32050 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
32051 ],
32052 [
32053 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
32054 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
32055 ],
32056 [
32057 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
32058 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
32059 ],
32060 [
32061 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
32062 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
32063 ],
32064 [
32065 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
32066 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
32067 ],
32068 [
32069 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
32070 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
32071 ],
32072 [
32073 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
32074 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
32075 ],
32076 [
32077 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
32078 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
32079 ],
32080 [
32081 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
32082 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
32083 ],
32084 [
32085 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
32086 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
32087 ],
32088 [
32089 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
32090 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
32091 ],
32092 [
32093 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
32094 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
32095 ],
32096 [
32097 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
32098 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
32099 ],
32100 [
32101 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
32102 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
32103 ],
32104 [
32105 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
32106 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
32107 ],
32108 [
32109 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
32110 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
32111 ],
32112 [
32113 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
32114 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
32115 ],
32116 [
32117 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
32118 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
32119 ],
32120 [
32121 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
32122 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
32123 ],
32124 [
32125 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
32126 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
32127 ],
32128 [
32129 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
32130 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
32131 ],
32132 [
32133 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
32134 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
32135 ],
32136 [
32137 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
32138 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
32139 ],
32140 [
32141 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
32142 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
32143 ],
32144 [
32145 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
32146 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
32147 ],
32148 [
32149 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
32150 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
32151 ],
32152 [
32153 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
32154 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
32155 ],
32156 [
32157 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
32158 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
32159 ],
32160 [
32161 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
32162 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
32163 ],
32164 [
32165 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
32166 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
32167 ],
32168 [
32169 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
32170 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
32171 ],
32172 [
32173 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
32174 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
32175 ],
32176 [
32177 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
32178 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
32179 ],
32180 [
32181 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
32182 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
32183 ],
32184 [
32185 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
32186 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
32187 ],
32188 [
32189 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
32190 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
32191 ],
32192 [
32193 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
32194 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
32195 ],
32196 [
32197 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
32198 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
32199 ],
32200 [
32201 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
32202 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
32203 ],
32204 [
32205 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
32206 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
32207 ],
32208 [
32209 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
32210 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
32211 ],
32212 [
32213 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
32214 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
32215 ],
32216 [
32217 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
32218 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
32219 ],
32220 [
32221 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
32222 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
32223 ],
32224 [
32225 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
32226 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
32227 ],
32228 [
32229 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
32230 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
32231 ],
32232 [
32233 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
32234 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
32235 ],
32236 [
32237 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
32238 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
32239 ],
32240 [
32241 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
32242 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
32243 ],
32244 [
32245 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
32246 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
32247 ],
32248 [
32249 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
32250 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
32251 ],
32252 [
32253 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
32254 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
32255 ],
32256 [
32257 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
32258 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
32259 ],
32260 [
32261 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
32262 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
32263 ],
32264 [
32265 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
32266 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
32267 ],
32268 [
32269 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
32270 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
32271 ],
32272 [
32273 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
32274 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
32275 ],
32276 [
32277 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
32278 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
32279 ],
32280 [
32281 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
32282 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
32283 ],
32284 [
32285 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
32286 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
32287 ],
32288 [
32289 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
32290 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
32291 ],
32292 [
32293 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
32294 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
32295 ],
32296 [
32297 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
32298 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
32299 ],
32300 [
32301 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
32302 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
32303 ],
32304 [
32305 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
32306 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
32307 ],
32308 [
32309 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
32310 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
32311 ],
32312 [
32313 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
32314 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
32315 ],
32316 [
32317 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
32318 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
32319 ],
32320 [
32321 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
32322 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
32323 ],
32324 [
32325 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
32326 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
32327 ],
32328 [
32329 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
32330 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
32331 ],
32332 [
32333 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
32334 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
32335 ],
32336 [
32337 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
32338 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
32339 ],
32340 [
32341 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
32342 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
32343 ],
32344 [
32345 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
32346 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
32347 ],
32348 [
32349 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
32350 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
32351 ],
32352 [
32353 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
32354 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
32355 ],
32356 [
32357 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
32358 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
32359 ],
32360 [
32361 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
32362 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
32363 ],
32364 [
32365 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
32366 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
32367 ],
32368 [
32369 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
32370 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
32371 ],
32372 [
32373 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
32374 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
32375 ],
32376 [
32377 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
32378 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
32379 ],
32380 [
32381 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
32382 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
32383 ],
32384 [
32385 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
32386 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
32387 ],
32388 [
32389 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
32390 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
32391 ],
32392 [
32393 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
32394 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
32395 ],
32396 [
32397 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
32398 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
32399 ],
32400 [
32401 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
32402 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
32403 ],
32404 [
32405 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
32406 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
32407 ],
32408 [
32409 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
32410 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
32411 ],
32412 [
32413 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
32414 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
32415 ],
32416 [
32417 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
32418 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
32419 ],
32420 [
32421 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
32422 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
32423 ],
32424 [
32425 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
32426 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
32427 ],
32428 [
32429 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
32430 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
32431 ],
32432 [
32433 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
32434 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
32435 ],
32436 [
32437 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
32438 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
32439 ],
32440 [
32441 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
32442 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
32443 ],
32444 [
32445 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
32446 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
32447 ],
32448 [
32449 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
32450 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
32451 ],
32452 [
32453 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
32454 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
32455 ],
32456 [
32457 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
32458 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
32459 ],
32460 [
32461 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
32462 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
32463 ],
32464 [
32465 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
32466 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
32467 ],
32468 [
32469 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
32470 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
32471 ],
32472 [
32473 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
32474 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
32475 ],
32476 [
32477 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
32478 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
32479 ],
32480 [
32481 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
32482 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
32483 ],
32484 [
32485 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
32486 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
32487 ],
32488 [
32489 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
32490 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
32491 ],
32492 [
32493 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
32494 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
32495 ],
32496 [
32497 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
32498 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
32499 ],
32500 [
32501 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
32502 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
32503 ]
32504 ]
32505 }
32506 };
32507
32508 },{}],54:[function(require,module,exports){
32509 'use strict';
32510
32511 var utils = exports;
32512 var BN = require('bn.js');
32513
32514 utils.assert = function assert(val, msg) {
32515 if (!val)
32516 throw new Error(msg || 'Assertion failed');
32517 };
32518
32519 function toArray(msg, enc) {
32520 if (Array.isArray(msg))
32521 return msg.slice();
32522 if (!msg)
32523 return [];
32524 var res = [];
32525 if (typeof msg !== 'string') {
32526 for (var i = 0; i < msg.length; i++)
32527 res[i] = msg[i] | 0;
32528 return res;
32529 }
32530 if (!enc) {
32531 for (var i = 0; i < msg.length; i++) {
32532 var c = msg.charCodeAt(i);
32533 var hi = c >> 8;
32534 var lo = c & 0xff;
32535 if (hi)
32536 res.push(hi, lo);
32537 else
32538 res.push(lo);
32539 }
32540 } else if (enc === 'hex') {
32541 msg = msg.replace(/[^a-z0-9]+/ig, '');
32542 if (msg.length % 2 !== 0)
32543 msg = '0' + msg;
32544 for (var i = 0; i < msg.length; i += 2)
32545 res.push(parseInt(msg[i] + msg[i + 1], 16));
32546 }
32547 return res;
32548 }
32549 utils.toArray = toArray;
32550
32551 function zero2(word) {
32552 if (word.length === 1)
32553 return '0' + word;
32554 else
32555 return word;
32556 }
32557 utils.zero2 = zero2;
32558
32559 function toHex(msg) {
32560 var res = '';
32561 for (var i = 0; i < msg.length; i++)
32562 res += zero2(msg[i].toString(16));
32563 return res;
32564 }
32565 utils.toHex = toHex;
32566
32567 utils.encode = function encode(arr, enc) {
32568 if (enc === 'hex')
32569 return toHex(arr);
32570 else
32571 return arr;
32572 };
32573
32574 // Represent num in a w-NAF form
32575 function getNAF(num, w) {
32576 var naf = [];
32577 var ws = 1 << (w + 1);
32578 var k = num.clone();
32579 while (k.cmpn(1) >= 0) {
32580 var z;
32581 if (k.isOdd()) {
32582 var mod = k.andln(ws - 1);
32583 if (mod > (ws >> 1) - 1)
32584 z = (ws >> 1) - mod;
32585 else
32586 z = mod;
32587 k.isubn(z);
32588 } else {
32589 z = 0;
32590 }
32591 naf.push(z);
32592
32593 // Optimization, shift by word if possible
32594 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
32595 for (var i = 1; i < shift; i++)
32596 naf.push(0);
32597 k.iushrn(shift);
32598 }
32599
32600 return naf;
32601 }
32602 utils.getNAF = getNAF;
32603
32604 // Represent k1, k2 in a Joint Sparse Form
32605 function getJSF(k1, k2) {
32606 var jsf = [
32607 [],
32608 []
32609 ];
32610
32611 k1 = k1.clone();
32612 k2 = k2.clone();
32613 var d1 = 0;
32614 var d2 = 0;
32615 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
32616
32617 // First phase
32618 var m14 = (k1.andln(3) + d1) & 3;
32619 var m24 = (k2.andln(3) + d2) & 3;
32620 if (m14 === 3)
32621 m14 = -1;
32622 if (m24 === 3)
32623 m24 = -1;
32624 var u1;
32625 if ((m14 & 1) === 0) {
32626 u1 = 0;
32627 } else {
32628 var m8 = (k1.andln(7) + d1) & 7;
32629 if ((m8 === 3 || m8 === 5) && m24 === 2)
32630 u1 = -m14;
32631 else
32632 u1 = m14;
32633 }
32634 jsf[0].push(u1);
32635
32636 var u2;
32637 if ((m24 & 1) === 0) {
32638 u2 = 0;
32639 } else {
32640 var m8 = (k2.andln(7) + d2) & 7;
32641 if ((m8 === 3 || m8 === 5) && m14 === 2)
32642 u2 = -m24;
32643 else
32644 u2 = m24;
32645 }
32646 jsf[1].push(u2);
32647
32648 // Second phase
32649 if (2 * d1 === u1 + 1)
32650 d1 = 1 - d1;
32651 if (2 * d2 === u2 + 1)
32652 d2 = 1 - d2;
32653 k1.iushrn(1);
32654 k2.iushrn(1);
32655 }
32656
32657 return jsf;
32658 }
32659 utils.getJSF = getJSF;
32660
32661 function cachedProperty(obj, name, computer) {
32662 var key = '_' + name;
32663 obj.prototype[name] = function cachedProperty() {
32664 return this[key] !== undefined ? this[key] :
32665 this[key] = computer.call(this);
32666 };
32667 }
32668 utils.cachedProperty = cachedProperty;
32669
32670 function parseBytes(bytes) {
32671 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
32672 bytes;
32673 }
32674 utils.parseBytes = parseBytes;
32675
32676 function intFromLE(bytes) {
32677 return new BN(bytes, 'hex', 'le');
32678 }
32679 utils.intFromLE = intFromLE;
32680
32681
32682 },{"bn.js":33}],55:[function(require,module,exports){
32683 module.exports={
32684 "_args": [
32685 [
32686 {
32687 "raw": "elliptic@^6.2.3",
32688 "scope": null,
32689 "escapedName": "elliptic",
32690 "name": "elliptic",
32691 "rawSpec": "^6.2.3",
32692 "spec": ">=6.2.3 <7.0.0",
32693 "type": "range"
32694 },
32695 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
32696 ]
32697 ],
32698 "_from": "elliptic@>=6.2.3 <7.0.0",
32699 "_id": "elliptic@6.3.3",
32700 "_inCache": true,
32701 "_location": "/elliptic",
32702 "_nodeVersion": "7.0.0",
32703 "_npmOperationalInternal": {
32704 "host": "packages-18-east.internal.npmjs.com",
32705 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
32706 },
32707 "_npmUser": {
32708 "name": "indutny",
32709 "email": "fedor@indutny.com"
32710 },
32711 "_npmVersion": "3.10.8",
32712 "_phantomChildren": {},
32713 "_requested": {
32714 "raw": "elliptic@^6.2.3",
32715 "scope": null,
32716 "escapedName": "elliptic",
32717 "name": "elliptic",
32718 "rawSpec": "^6.2.3",
32719 "spec": ">=6.2.3 <7.0.0",
32720 "type": "range"
32721 },
32722 "_requiredBy": [
32723 "/browserify-sign",
32724 "/create-ecdh",
32725 "/secp256k1"
32726 ],
32727 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
32728 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
32729 "_shrinkwrap": null,
32730 "_spec": "elliptic@^6.2.3",
32731 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
32732 "author": {
32733 "name": "Fedor Indutny",
32734 "email": "fedor@indutny.com"
32735 },
32736 "bugs": {
32737 "url": "https://github.com/indutny/elliptic/issues"
32738 },
32739 "dependencies": {
32740 "bn.js": "^4.4.0",
32741 "brorand": "^1.0.1",
32742 "hash.js": "^1.0.0",
32743 "inherits": "^2.0.1"
32744 },
32745 "description": "EC cryptography",
32746 "devDependencies": {
32747 "brfs": "^1.4.3",
32748 "coveralls": "^2.11.3",
32749 "grunt": "^0.4.5",
32750 "grunt-browserify": "^5.0.0",
32751 "grunt-cli": "^1.2.0",
32752 "grunt-contrib-connect": "^1.0.0",
32753 "grunt-contrib-copy": "^1.0.0",
32754 "grunt-contrib-uglify": "^1.0.1",
32755 "grunt-mocha-istanbul": "^3.0.1",
32756 "grunt-saucelabs": "^8.6.2",
32757 "istanbul": "^0.4.2",
32758 "jscs": "^2.9.0",
32759 "jshint": "^2.6.0",
32760 "mocha": "^2.1.0"
32761 },
32762 "directories": {},
32763 "dist": {
32764 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
32765 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
32766 },
32767 "files": [
32768 "lib"
32769 ],
32770 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
32771 "homepage": "https://github.com/indutny/elliptic",
32772 "keywords": [
32773 "EC",
32774 "Elliptic",
32775 "curve",
32776 "Cryptography"
32777 ],
32778 "license": "MIT",
32779 "main": "lib/elliptic.js",
32780 "maintainers": [
32781 {
32782 "name": "indutny",
32783 "email": "fedor@indutny.com"
32784 }
32785 ],
32786 "name": "elliptic",
32787 "optionalDependencies": {},
32788 "readme": "ERROR: No README data found!",
32789 "repository": {
32790 "type": "git",
32791 "url": "git+ssh://git@github.com/indutny/elliptic.git"
32792 },
32793 "scripts": {
32794 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
32795 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
32796 "lint": "npm run jscs && npm run jshint",
32797 "test": "npm run lint && npm run unit",
32798 "unit": "istanbul test _mocha --reporter=spec test/index.js",
32799 "version": "grunt dist && git add dist/"
32800 },
32801 "version": "6.3.3"
32802 }
32803
32804 },{}],56:[function(require,module,exports){
32805 (function (Buffer){
32806 'use strict';
32807
32808 var isHexPrefixed = require('is-hex-prefixed');
32809 var stripHexPrefix = require('strip-hex-prefix');
32810
32811 /**
32812 * Pads a `String` to have an even length
32813 * @param {String} value
32814 * @return {String} output
32815 */
32816 function padToEven(value) {
32817 var a = value; // eslint-disable-line
32818
32819 if (typeof a !== 'string') {
32820 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
32821 }
32822
32823 if (a.length % 2) {
32824 a = '0' + a;
32825 }
32826
32827 return a;
32828 }
32829
32830 /**
32831 * Converts a `Number` into a hex `String`
32832 * @param {Number} i
32833 * @return {String}
32834 */
32835 function intToHex(i) {
32836 var hex = i.toString(16); // eslint-disable-line
32837
32838 return '0x' + padToEven(hex);
32839 }
32840
32841 /**
32842 * Converts an `Number` to a `Buffer`
32843 * @param {Number} i
32844 * @return {Buffer}
32845 */
32846 function intToBuffer(i) {
32847 var hex = intToHex(i);
32848
32849 return new Buffer(hex.slice(2), 'hex');
32850 }
32851
32852 /**
32853 * Get the binary size of a string
32854 * @param {String} str
32855 * @return {Number}
32856 */
32857 function getBinarySize(str) {
32858 if (typeof str !== 'string') {
32859 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
32860 }
32861
32862 return Buffer.byteLength(str, 'utf8');
32863 }
32864
32865 /**
32866 * Returns TRUE if the first specified array contains all elements
32867 * from the second one. FALSE otherwise.
32868 *
32869 * @param {array} superset
32870 * @param {array} subset
32871 *
32872 * @returns {boolean}
32873 */
32874 function arrayContainsArray(superset, subset, some) {
32875 if (Array.isArray(superset) !== true) {
32876 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
32877 }
32878 if (Array.isArray(subset) !== true) {
32879 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
32880 }
32881
32882 return subset[Boolean(some) && 'some' || 'every'](function (value) {
32883 return superset.indexOf(value) >= 0;
32884 });
32885 }
32886
32887 /**
32888 * Should be called to get utf8 from it's hex representation
32889 *
32890 * @method toUtf8
32891 * @param {String} string in hex
32892 * @returns {String} ascii string representation of hex value
32893 */
32894 function toUtf8(hex) {
32895 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
32896
32897 return bufferValue.toString('utf8');
32898 }
32899
32900 /**
32901 * Should be called to get ascii from it's hex representation
32902 *
32903 * @method toAscii
32904 * @param {String} string in hex
32905 * @returns {String} ascii string representation of hex value
32906 */
32907 function toAscii(hex) {
32908 var str = ''; // eslint-disable-line
32909 var i = 0,
32910 l = hex.length; // eslint-disable-line
32911
32912 if (hex.substring(0, 2) === '0x') {
32913 i = 2;
32914 }
32915
32916 for (; i < l; i += 2) {
32917 var code = parseInt(hex.substr(i, 2), 16);
32918 str += String.fromCharCode(code);
32919 }
32920
32921 return str;
32922 }
32923
32924 /**
32925 * Should be called to get hex representation (prefixed by 0x) of utf8 string
32926 *
32927 * @method fromUtf8
32928 * @param {String} string
32929 * @param {Number} optional padding
32930 * @returns {String} hex representation of input string
32931 */
32932 function fromUtf8(stringValue) {
32933 var str = new Buffer(stringValue, 'utf8');
32934
32935 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
32936 }
32937
32938 /**
32939 * Should be called to get hex representation (prefixed by 0x) of ascii string
32940 *
32941 * @method fromAscii
32942 * @param {String} string
32943 * @param {Number} optional padding
32944 * @returns {String} hex representation of input string
32945 */
32946 function fromAscii(stringValue) {
32947 var hex = ''; // eslint-disable-line
32948 for (var i = 0; i < stringValue.length; i++) {
32949 // eslint-disable-line
32950 var code = stringValue.charCodeAt(i);
32951 var n = code.toString(16);
32952 hex += n.length < 2 ? '0' + n : n;
32953 }
32954
32955 return '0x' + hex;
32956 }
32957
32958 /**
32959 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
32960 *
32961 * @method getKeys get specific key from inner object array of objects
32962 * @param {String} params
32963 * @param {String} key
32964 * @param {Boolean} allowEmpty
32965 * @returns {Array} output just a simple array of output keys
32966 */
32967 function getKeys(params, key, allowEmpty) {
32968 if (!Array.isArray(params)) {
32969 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
32970 }
32971 if (typeof key !== 'string') {
32972 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
32973 }
32974
32975 var result = []; // eslint-disable-line
32976
32977 for (var i = 0; i < params.length; i++) {
32978 // eslint-disable-line
32979 var value = params[i][key]; // eslint-disable-line
32980 if (allowEmpty && !value) {
32981 value = '';
32982 } else if (typeof value !== 'string') {
32983 throw new Error('invalid abi');
32984 }
32985 result.push(value);
32986 }
32987
32988 return result;
32989 }
32990
32991 /**
32992 * Is the string a hex string.
32993 *
32994 * @method check if string is hex string of specific length
32995 * @param {String} value
32996 * @param {Number} length
32997 * @returns {Boolean} output the string is a hex string
32998 */
32999 function isHexString(value, length) {
33000 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
33001 return false;
33002 }
33003
33004 if (length && value.length !== 2 + 2 * length) {
33005 return false;
33006 }
33007
33008 return true;
33009 }
33010
33011 module.exports = {
33012 arrayContainsArray: arrayContainsArray,
33013 intToBuffer: intToBuffer,
33014 getBinarySize: getBinarySize,
33015 isHexPrefixed: isHexPrefixed,
33016 stripHexPrefix: stripHexPrefix,
33017 padToEven: padToEven,
33018 intToHex: intToHex,
33019 fromAscii: fromAscii,
33020 fromUtf8: fromUtf8,
33021 toAscii: toAscii,
33022 toUtf8: toUtf8,
33023 getKeys: getKeys,
33024 isHexString: isHexString
33025 };
33026 }).call(this,require("buffer").Buffer)
33027 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
33028 var hash = exports;
33029
33030 hash.utils = require('./hash/utils');
33031 hash.common = require('./hash/common');
33032 hash.sha = require('./hash/sha');
33033 hash.ripemd = require('./hash/ripemd');
33034 hash.hmac = require('./hash/hmac');
33035
33036 // Proxy hash functions to the main object
33037 hash.sha1 = hash.sha.sha1;
33038 hash.sha256 = hash.sha.sha256;
33039 hash.sha224 = hash.sha.sha224;
33040 hash.sha384 = hash.sha.sha384;
33041 hash.sha512 = hash.sha.sha512;
33042 hash.ripemd160 = hash.ripemd.ripemd160;
33043
33044 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
33045 var hash = require('../hash');
33046 var utils = hash.utils;
33047 var assert = utils.assert;
33048
33049 function BlockHash() {
33050 this.pending = null;
33051 this.pendingTotal = 0;
33052 this.blockSize = this.constructor.blockSize;
33053 this.outSize = this.constructor.outSize;
33054 this.hmacStrength = this.constructor.hmacStrength;
33055 this.padLength = this.constructor.padLength / 8;
33056 this.endian = 'big';
33057
33058 this._delta8 = this.blockSize / 8;
33059 this._delta32 = this.blockSize / 32;
33060 }
33061 exports.BlockHash = BlockHash;
33062
33063 BlockHash.prototype.update = function update(msg, enc) {
33064 // Convert message to array, pad it, and join into 32bit blocks
33065 msg = utils.toArray(msg, enc);
33066 if (!this.pending)
33067 this.pending = msg;
33068 else
33069 this.pending = this.pending.concat(msg);
33070 this.pendingTotal += msg.length;
33071
33072 // Enough data, try updating
33073 if (this.pending.length >= this._delta8) {
33074 msg = this.pending;
33075
33076 // Process pending data in blocks
33077 var r = msg.length % this._delta8;
33078 this.pending = msg.slice(msg.length - r, msg.length);
33079 if (this.pending.length === 0)
33080 this.pending = null;
33081
33082 msg = utils.join32(msg, 0, msg.length - r, this.endian);
33083 for (var i = 0; i < msg.length; i += this._delta32)
33084 this._update(msg, i, i + this._delta32);
33085 }
33086
33087 return this;
33088 };
33089
33090 BlockHash.prototype.digest = function digest(enc) {
33091 this.update(this._pad());
33092 assert(this.pending === null);
33093
33094 return this._digest(enc);
33095 };
33096
33097 BlockHash.prototype._pad = function pad() {
33098 var len = this.pendingTotal;
33099 var bytes = this._delta8;
33100 var k = bytes - ((len + this.padLength) % bytes);
33101 var res = new Array(k + this.padLength);
33102 res[0] = 0x80;
33103 for (var i = 1; i < k; i++)
33104 res[i] = 0;
33105
33106 // Append length
33107 len <<= 3;
33108 if (this.endian === 'big') {
33109 for (var t = 8; t < this.padLength; t++)
33110 res[i++] = 0;
33111
33112 res[i++] = 0;
33113 res[i++] = 0;
33114 res[i++] = 0;
33115 res[i++] = 0;
33116 res[i++] = (len >>> 24) & 0xff;
33117 res[i++] = (len >>> 16) & 0xff;
33118 res[i++] = (len >>> 8) & 0xff;
33119 res[i++] = len & 0xff;
33120 } else {
33121 res[i++] = len & 0xff;
33122 res[i++] = (len >>> 8) & 0xff;
33123 res[i++] = (len >>> 16) & 0xff;
33124 res[i++] = (len >>> 24) & 0xff;
33125 res[i++] = 0;
33126 res[i++] = 0;
33127 res[i++] = 0;
33128 res[i++] = 0;
33129
33130 for (var t = 8; t < this.padLength; t++)
33131 res[i++] = 0;
33132 }
33133
33134 return res;
33135 };
33136
33137 },{"../hash":57}],59:[function(require,module,exports){
33138 var hmac = exports;
33139
33140 var hash = require('../hash');
33141 var utils = hash.utils;
33142 var assert = utils.assert;
33143
33144 function Hmac(hash, key, enc) {
33145 if (!(this instanceof Hmac))
33146 return new Hmac(hash, key, enc);
33147 this.Hash = hash;
33148 this.blockSize = hash.blockSize / 8;
33149 this.outSize = hash.outSize / 8;
33150 this.inner = null;
33151 this.outer = null;
33152
33153 this._init(utils.toArray(key, enc));
33154 }
33155 module.exports = Hmac;
33156
33157 Hmac.prototype._init = function init(key) {
33158 // Shorten key, if needed
33159 if (key.length > this.blockSize)
33160 key = new this.Hash().update(key).digest();
33161 assert(key.length <= this.blockSize);
33162
33163 // Add padding to key
33164 for (var i = key.length; i < this.blockSize; i++)
33165 key.push(0);
33166
33167 for (var i = 0; i < key.length; i++)
33168 key[i] ^= 0x36;
33169 this.inner = new this.Hash().update(key);
33170
33171 // 0x36 ^ 0x5c = 0x6a
33172 for (var i = 0; i < key.length; i++)
33173 key[i] ^= 0x6a;
33174 this.outer = new this.Hash().update(key);
33175 };
33176
33177 Hmac.prototype.update = function update(msg, enc) {
33178 this.inner.update(msg, enc);
33179 return this;
33180 };
33181
33182 Hmac.prototype.digest = function digest(enc) {
33183 this.outer.update(this.inner.digest());
33184 return this.outer.digest(enc);
33185 };
33186
33187 },{"../hash":57}],60:[function(require,module,exports){
33188 var hash = require('../hash');
33189 var utils = hash.utils;
33190
33191 var rotl32 = utils.rotl32;
33192 var sum32 = utils.sum32;
33193 var sum32_3 = utils.sum32_3;
33194 var sum32_4 = utils.sum32_4;
33195 var BlockHash = hash.common.BlockHash;
33196
33197 function RIPEMD160() {
33198 if (!(this instanceof RIPEMD160))
33199 return new RIPEMD160();
33200
33201 BlockHash.call(this);
33202
33203 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
33204 this.endian = 'little';
33205 }
33206 utils.inherits(RIPEMD160, BlockHash);
33207 exports.ripemd160 = RIPEMD160;
33208
33209 RIPEMD160.blockSize = 512;
33210 RIPEMD160.outSize = 160;
33211 RIPEMD160.hmacStrength = 192;
33212 RIPEMD160.padLength = 64;
33213
33214 RIPEMD160.prototype._update = function update(msg, start) {
33215 var A = this.h[0];
33216 var B = this.h[1];
33217 var C = this.h[2];
33218 var D = this.h[3];
33219 var E = this.h[4];
33220 var Ah = A;
33221 var Bh = B;
33222 var Ch = C;
33223 var Dh = D;
33224 var Eh = E;
33225 for (var j = 0; j < 80; j++) {
33226 var T = sum32(
33227 rotl32(
33228 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
33229 s[j]),
33230 E);
33231 A = E;
33232 E = D;
33233 D = rotl32(C, 10);
33234 C = B;
33235 B = T;
33236 T = sum32(
33237 rotl32(
33238 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
33239 sh[j]),
33240 Eh);
33241 Ah = Eh;
33242 Eh = Dh;
33243 Dh = rotl32(Ch, 10);
33244 Ch = Bh;
33245 Bh = T;
33246 }
33247 T = sum32_3(this.h[1], C, Dh);
33248 this.h[1] = sum32_3(this.h[2], D, Eh);
33249 this.h[2] = sum32_3(this.h[3], E, Ah);
33250 this.h[3] = sum32_3(this.h[4], A, Bh);
33251 this.h[4] = sum32_3(this.h[0], B, Ch);
33252 this.h[0] = T;
33253 };
33254
33255 RIPEMD160.prototype._digest = function digest(enc) {
33256 if (enc === 'hex')
33257 return utils.toHex32(this.h, 'little');
33258 else
33259 return utils.split32(this.h, 'little');
33260 };
33261
33262 function f(j, x, y, z) {
33263 if (j <= 15)
33264 return x ^ y ^ z;
33265 else if (j <= 31)
33266 return (x & y) | ((~x) & z);
33267 else if (j <= 47)
33268 return (x | (~y)) ^ z;
33269 else if (j <= 63)
33270 return (x & z) | (y & (~z));
33271 else
33272 return x ^ (y | (~z));
33273 }
33274
33275 function K(j) {
33276 if (j <= 15)
33277 return 0x00000000;
33278 else if (j <= 31)
33279 return 0x5a827999;
33280 else if (j <= 47)
33281 return 0x6ed9eba1;
33282 else if (j <= 63)
33283 return 0x8f1bbcdc;
33284 else
33285 return 0xa953fd4e;
33286 }
33287
33288 function Kh(j) {
33289 if (j <= 15)
33290 return 0x50a28be6;
33291 else if (j <= 31)
33292 return 0x5c4dd124;
33293 else if (j <= 47)
33294 return 0x6d703ef3;
33295 else if (j <= 63)
33296 return 0x7a6d76e9;
33297 else
33298 return 0x00000000;
33299 }
33300
33301 var r = [
33302 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
33303 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
33304 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
33305 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
33306 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
33307 ];
33308
33309 var rh = [
33310 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
33311 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
33312 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
33313 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
33314 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
33315 ];
33316
33317 var s = [
33318 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
33319 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
33320 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
33321 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
33322 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
33323 ];
33324
33325 var sh = [
33326 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
33327 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
33328 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
33329 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
33330 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
33331 ];
33332
33333 },{"../hash":57}],61:[function(require,module,exports){
33334 var hash = require('../hash');
33335 var utils = hash.utils;
33336 var assert = utils.assert;
33337
33338 var rotr32 = utils.rotr32;
33339 var rotl32 = utils.rotl32;
33340 var sum32 = utils.sum32;
33341 var sum32_4 = utils.sum32_4;
33342 var sum32_5 = utils.sum32_5;
33343 var rotr64_hi = utils.rotr64_hi;
33344 var rotr64_lo = utils.rotr64_lo;
33345 var shr64_hi = utils.shr64_hi;
33346 var shr64_lo = utils.shr64_lo;
33347 var sum64 = utils.sum64;
33348 var sum64_hi = utils.sum64_hi;
33349 var sum64_lo = utils.sum64_lo;
33350 var sum64_4_hi = utils.sum64_4_hi;
33351 var sum64_4_lo = utils.sum64_4_lo;
33352 var sum64_5_hi = utils.sum64_5_hi;
33353 var sum64_5_lo = utils.sum64_5_lo;
33354 var BlockHash = hash.common.BlockHash;
33355
33356 var sha256_K = [
33357 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
33358 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
33359 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
33360 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
33361 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
33362 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
33363 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
33364 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
33365 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
33366 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
33367 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
33368 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
33369 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
33370 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
33371 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
33372 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
33373 ];
33374
33375 var sha512_K = [
33376 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
33377 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
33378 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
33379 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
33380 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
33381 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
33382 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
33383 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
33384 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
33385 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
33386 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
33387 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
33388 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
33389 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
33390 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
33391 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
33392 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
33393 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
33394 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
33395 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
33396 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
33397 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
33398 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
33399 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
33400 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
33401 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
33402 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
33403 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
33404 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
33405 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
33406 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
33407 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
33408 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
33409 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
33410 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
33411 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
33412 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
33413 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
33414 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
33415 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
33416 ];
33417
33418 var sha1_K = [
33419 0x5A827999, 0x6ED9EBA1,
33420 0x8F1BBCDC, 0xCA62C1D6
33421 ];
33422
33423 function SHA256() {
33424 if (!(this instanceof SHA256))
33425 return new SHA256();
33426
33427 BlockHash.call(this);
33428 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
33429 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
33430 this.k = sha256_K;
33431 this.W = new Array(64);
33432 }
33433 utils.inherits(SHA256, BlockHash);
33434 exports.sha256 = SHA256;
33435
33436 SHA256.blockSize = 512;
33437 SHA256.outSize = 256;
33438 SHA256.hmacStrength = 192;
33439 SHA256.padLength = 64;
33440
33441 SHA256.prototype._update = function _update(msg, start) {
33442 var W = this.W;
33443
33444 for (var i = 0; i < 16; i++)
33445 W[i] = msg[start + i];
33446 for (; i < W.length; i++)
33447 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
33448
33449 var a = this.h[0];
33450 var b = this.h[1];
33451 var c = this.h[2];
33452 var d = this.h[3];
33453 var e = this.h[4];
33454 var f = this.h[5];
33455 var g = this.h[6];
33456 var h = this.h[7];
33457
33458 assert(this.k.length === W.length);
33459 for (var i = 0; i < W.length; i++) {
33460 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
33461 var T2 = sum32(s0_256(a), maj32(a, b, c));
33462 h = g;
33463 g = f;
33464 f = e;
33465 e = sum32(d, T1);
33466 d = c;
33467 c = b;
33468 b = a;
33469 a = sum32(T1, T2);
33470 }
33471
33472 this.h[0] = sum32(this.h[0], a);
33473 this.h[1] = sum32(this.h[1], b);
33474 this.h[2] = sum32(this.h[2], c);
33475 this.h[3] = sum32(this.h[3], d);
33476 this.h[4] = sum32(this.h[4], e);
33477 this.h[5] = sum32(this.h[5], f);
33478 this.h[6] = sum32(this.h[6], g);
33479 this.h[7] = sum32(this.h[7], h);
33480 };
33481
33482 SHA256.prototype._digest = function digest(enc) {
33483 if (enc === 'hex')
33484 return utils.toHex32(this.h, 'big');
33485 else
33486 return utils.split32(this.h, 'big');
33487 };
33488
33489 function SHA224() {
33490 if (!(this instanceof SHA224))
33491 return new SHA224();
33492
33493 SHA256.call(this);
33494 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
33495 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
33496 }
33497 utils.inherits(SHA224, SHA256);
33498 exports.sha224 = SHA224;
33499
33500 SHA224.blockSize = 512;
33501 SHA224.outSize = 224;
33502 SHA224.hmacStrength = 192;
33503 SHA224.padLength = 64;
33504
33505 SHA224.prototype._digest = function digest(enc) {
33506 // Just truncate output
33507 if (enc === 'hex')
33508 return utils.toHex32(this.h.slice(0, 7), 'big');
33509 else
33510 return utils.split32(this.h.slice(0, 7), 'big');
33511 };
33512
33513 function SHA512() {
33514 if (!(this instanceof SHA512))
33515 return new SHA512();
33516
33517 BlockHash.call(this);
33518 this.h = [ 0x6a09e667, 0xf3bcc908,
33519 0xbb67ae85, 0x84caa73b,
33520 0x3c6ef372, 0xfe94f82b,
33521 0xa54ff53a, 0x5f1d36f1,
33522 0x510e527f, 0xade682d1,
33523 0x9b05688c, 0x2b3e6c1f,
33524 0x1f83d9ab, 0xfb41bd6b,
33525 0x5be0cd19, 0x137e2179 ];
33526 this.k = sha512_K;
33527 this.W = new Array(160);
33528 }
33529 utils.inherits(SHA512, BlockHash);
33530 exports.sha512 = SHA512;
33531
33532 SHA512.blockSize = 1024;
33533 SHA512.outSize = 512;
33534 SHA512.hmacStrength = 192;
33535 SHA512.padLength = 128;
33536
33537 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
33538 var W = this.W;
33539
33540 // 32 x 32bit words
33541 for (var i = 0; i < 32; i++)
33542 W[i] = msg[start + i];
33543 for (; i < W.length; i += 2) {
33544 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
33545 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
33546 var c1_hi = W[i - 14]; // i - 7
33547 var c1_lo = W[i - 13];
33548 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
33549 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
33550 var c3_hi = W[i - 32]; // i - 16
33551 var c3_lo = W[i - 31];
33552
33553 W[i] = sum64_4_hi(c0_hi, c0_lo,
33554 c1_hi, c1_lo,
33555 c2_hi, c2_lo,
33556 c3_hi, c3_lo);
33557 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
33558 c1_hi, c1_lo,
33559 c2_hi, c2_lo,
33560 c3_hi, c3_lo);
33561 }
33562 };
33563
33564 SHA512.prototype._update = function _update(msg, start) {
33565 this._prepareBlock(msg, start);
33566
33567 var W = this.W;
33568
33569 var ah = this.h[0];
33570 var al = this.h[1];
33571 var bh = this.h[2];
33572 var bl = this.h[3];
33573 var ch = this.h[4];
33574 var cl = this.h[5];
33575 var dh = this.h[6];
33576 var dl = this.h[7];
33577 var eh = this.h[8];
33578 var el = this.h[9];
33579 var fh = this.h[10];
33580 var fl = this.h[11];
33581 var gh = this.h[12];
33582 var gl = this.h[13];
33583 var hh = this.h[14];
33584 var hl = this.h[15];
33585
33586 assert(this.k.length === W.length);
33587 for (var i = 0; i < W.length; i += 2) {
33588 var c0_hi = hh;
33589 var c0_lo = hl;
33590 var c1_hi = s1_512_hi(eh, el);
33591 var c1_lo = s1_512_lo(eh, el);
33592 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
33593 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
33594 var c3_hi = this.k[i];
33595 var c3_lo = this.k[i + 1];
33596 var c4_hi = W[i];
33597 var c4_lo = W[i + 1];
33598
33599 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
33600 c1_hi, c1_lo,
33601 c2_hi, c2_lo,
33602 c3_hi, c3_lo,
33603 c4_hi, c4_lo);
33604 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
33605 c1_hi, c1_lo,
33606 c2_hi, c2_lo,
33607 c3_hi, c3_lo,
33608 c4_hi, c4_lo);
33609
33610 var c0_hi = s0_512_hi(ah, al);
33611 var c0_lo = s0_512_lo(ah, al);
33612 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
33613 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
33614
33615 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
33616 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
33617
33618 hh = gh;
33619 hl = gl;
33620
33621 gh = fh;
33622 gl = fl;
33623
33624 fh = eh;
33625 fl = el;
33626
33627 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
33628 el = sum64_lo(dl, dl, T1_hi, T1_lo);
33629
33630 dh = ch;
33631 dl = cl;
33632
33633 ch = bh;
33634 cl = bl;
33635
33636 bh = ah;
33637 bl = al;
33638
33639 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
33640 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
33641 }
33642
33643 sum64(this.h, 0, ah, al);
33644 sum64(this.h, 2, bh, bl);
33645 sum64(this.h, 4, ch, cl);
33646 sum64(this.h, 6, dh, dl);
33647 sum64(this.h, 8, eh, el);
33648 sum64(this.h, 10, fh, fl);
33649 sum64(this.h, 12, gh, gl);
33650 sum64(this.h, 14, hh, hl);
33651 };
33652
33653 SHA512.prototype._digest = function digest(enc) {
33654 if (enc === 'hex')
33655 return utils.toHex32(this.h, 'big');
33656 else
33657 return utils.split32(this.h, 'big');
33658 };
33659
33660 function SHA384() {
33661 if (!(this instanceof SHA384))
33662 return new SHA384();
33663
33664 SHA512.call(this);
33665 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
33666 0x629a292a, 0x367cd507,
33667 0x9159015a, 0x3070dd17,
33668 0x152fecd8, 0xf70e5939,
33669 0x67332667, 0xffc00b31,
33670 0x8eb44a87, 0x68581511,
33671 0xdb0c2e0d, 0x64f98fa7,
33672 0x47b5481d, 0xbefa4fa4 ];
33673 }
33674 utils.inherits(SHA384, SHA512);
33675 exports.sha384 = SHA384;
33676
33677 SHA384.blockSize = 1024;
33678 SHA384.outSize = 384;
33679 SHA384.hmacStrength = 192;
33680 SHA384.padLength = 128;
33681
33682 SHA384.prototype._digest = function digest(enc) {
33683 if (enc === 'hex')
33684 return utils.toHex32(this.h.slice(0, 12), 'big');
33685 else
33686 return utils.split32(this.h.slice(0, 12), 'big');
33687 };
33688
33689 function SHA1() {
33690 if (!(this instanceof SHA1))
33691 return new SHA1();
33692
33693 BlockHash.call(this);
33694 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
33695 0x10325476, 0xc3d2e1f0 ];
33696 this.W = new Array(80);
33697 }
33698
33699 utils.inherits(SHA1, BlockHash);
33700 exports.sha1 = SHA1;
33701
33702 SHA1.blockSize = 512;
33703 SHA1.outSize = 160;
33704 SHA1.hmacStrength = 80;
33705 SHA1.padLength = 64;
33706
33707 SHA1.prototype._update = function _update(msg, start) {
33708 var W = this.W;
33709
33710 for (var i = 0; i < 16; i++)
33711 W[i] = msg[start + i];
33712
33713 for(; i < W.length; i++)
33714 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
33715
33716 var a = this.h[0];
33717 var b = this.h[1];
33718 var c = this.h[2];
33719 var d = this.h[3];
33720 var e = this.h[4];
33721
33722 for (var i = 0; i < W.length; i++) {
33723 var s = ~~(i / 20);
33724 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
33725 e = d;
33726 d = c;
33727 c = rotl32(b, 30);
33728 b = a;
33729 a = t;
33730 }
33731
33732 this.h[0] = sum32(this.h[0], a);
33733 this.h[1] = sum32(this.h[1], b);
33734 this.h[2] = sum32(this.h[2], c);
33735 this.h[3] = sum32(this.h[3], d);
33736 this.h[4] = sum32(this.h[4], e);
33737 };
33738
33739 SHA1.prototype._digest = function digest(enc) {
33740 if (enc === 'hex')
33741 return utils.toHex32(this.h, 'big');
33742 else
33743 return utils.split32(this.h, 'big');
33744 };
33745
33746 function ch32(x, y, z) {
33747 return (x & y) ^ ((~x) & z);
33748 }
33749
33750 function maj32(x, y, z) {
33751 return (x & y) ^ (x & z) ^ (y & z);
33752 }
33753
33754 function p32(x, y, z) {
33755 return x ^ y ^ z;
33756 }
33757
33758 function s0_256(x) {
33759 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
33760 }
33761
33762 function s1_256(x) {
33763 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
33764 }
33765
33766 function g0_256(x) {
33767 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
33768 }
33769
33770 function g1_256(x) {
33771 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
33772 }
33773
33774 function ft_1(s, x, y, z) {
33775 if (s === 0)
33776 return ch32(x, y, z);
33777 if (s === 1 || s === 3)
33778 return p32(x, y, z);
33779 if (s === 2)
33780 return maj32(x, y, z);
33781 }
33782
33783 function ch64_hi(xh, xl, yh, yl, zh, zl) {
33784 var r = (xh & yh) ^ ((~xh) & zh);
33785 if (r < 0)
33786 r += 0x100000000;
33787 return r;
33788 }
33789
33790 function ch64_lo(xh, xl, yh, yl, zh, zl) {
33791 var r = (xl & yl) ^ ((~xl) & zl);
33792 if (r < 0)
33793 r += 0x100000000;
33794 return r;
33795 }
33796
33797 function maj64_hi(xh, xl, yh, yl, zh, zl) {
33798 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
33799 if (r < 0)
33800 r += 0x100000000;
33801 return r;
33802 }
33803
33804 function maj64_lo(xh, xl, yh, yl, zh, zl) {
33805 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
33806 if (r < 0)
33807 r += 0x100000000;
33808 return r;
33809 }
33810
33811 function s0_512_hi(xh, xl) {
33812 var c0_hi = rotr64_hi(xh, xl, 28);
33813 var c1_hi = rotr64_hi(xl, xh, 2); // 34
33814 var c2_hi = rotr64_hi(xl, xh, 7); // 39
33815
33816 var r = c0_hi ^ c1_hi ^ c2_hi;
33817 if (r < 0)
33818 r += 0x100000000;
33819 return r;
33820 }
33821
33822 function s0_512_lo(xh, xl) {
33823 var c0_lo = rotr64_lo(xh, xl, 28);
33824 var c1_lo = rotr64_lo(xl, xh, 2); // 34
33825 var c2_lo = rotr64_lo(xl, xh, 7); // 39
33826
33827 var r = c0_lo ^ c1_lo ^ c2_lo;
33828 if (r < 0)
33829 r += 0x100000000;
33830 return r;
33831 }
33832
33833 function s1_512_hi(xh, xl) {
33834 var c0_hi = rotr64_hi(xh, xl, 14);
33835 var c1_hi = rotr64_hi(xh, xl, 18);
33836 var c2_hi = rotr64_hi(xl, xh, 9); // 41
33837
33838 var r = c0_hi ^ c1_hi ^ c2_hi;
33839 if (r < 0)
33840 r += 0x100000000;
33841 return r;
33842 }
33843
33844 function s1_512_lo(xh, xl) {
33845 var c0_lo = rotr64_lo(xh, xl, 14);
33846 var c1_lo = rotr64_lo(xh, xl, 18);
33847 var c2_lo = rotr64_lo(xl, xh, 9); // 41
33848
33849 var r = c0_lo ^ c1_lo ^ c2_lo;
33850 if (r < 0)
33851 r += 0x100000000;
33852 return r;
33853 }
33854
33855 function g0_512_hi(xh, xl) {
33856 var c0_hi = rotr64_hi(xh, xl, 1);
33857 var c1_hi = rotr64_hi(xh, xl, 8);
33858 var c2_hi = shr64_hi(xh, xl, 7);
33859
33860 var r = c0_hi ^ c1_hi ^ c2_hi;
33861 if (r < 0)
33862 r += 0x100000000;
33863 return r;
33864 }
33865
33866 function g0_512_lo(xh, xl) {
33867 var c0_lo = rotr64_lo(xh, xl, 1);
33868 var c1_lo = rotr64_lo(xh, xl, 8);
33869 var c2_lo = shr64_lo(xh, xl, 7);
33870
33871 var r = c0_lo ^ c1_lo ^ c2_lo;
33872 if (r < 0)
33873 r += 0x100000000;
33874 return r;
33875 }
33876
33877 function g1_512_hi(xh, xl) {
33878 var c0_hi = rotr64_hi(xh, xl, 19);
33879 var c1_hi = rotr64_hi(xl, xh, 29); // 61
33880 var c2_hi = shr64_hi(xh, xl, 6);
33881
33882 var r = c0_hi ^ c1_hi ^ c2_hi;
33883 if (r < 0)
33884 r += 0x100000000;
33885 return r;
33886 }
33887
33888 function g1_512_lo(xh, xl) {
33889 var c0_lo = rotr64_lo(xh, xl, 19);
33890 var c1_lo = rotr64_lo(xl, xh, 29); // 61
33891 var c2_lo = shr64_lo(xh, xl, 6);
33892
33893 var r = c0_lo ^ c1_lo ^ c2_lo;
33894 if (r < 0)
33895 r += 0x100000000;
33896 return r;
33897 }
33898
33899 },{"../hash":57}],62:[function(require,module,exports){
33900 var utils = exports;
33901 var inherits = require('inherits');
33902
33903 function toArray(msg, enc) {
33904 if (Array.isArray(msg))
33905 return msg.slice();
33906 if (!msg)
33907 return [];
33908 var res = [];
33909 if (typeof msg === 'string') {
33910 if (!enc) {
33911 for (var i = 0; i < msg.length; i++) {
33912 var c = msg.charCodeAt(i);
33913 var hi = c >> 8;
33914 var lo = c & 0xff;
33915 if (hi)
33916 res.push(hi, lo);
33917 else
33918 res.push(lo);
33919 }
33920 } else if (enc === 'hex') {
33921 msg = msg.replace(/[^a-z0-9]+/ig, '');
33922 if (msg.length % 2 !== 0)
33923 msg = '0' + msg;
33924 for (var i = 0; i < msg.length; i += 2)
33925 res.push(parseInt(msg[i] + msg[i + 1], 16));
33926 }
33927 } else {
33928 for (var i = 0; i < msg.length; i++)
33929 res[i] = msg[i] | 0;
33930 }
33931 return res;
33932 }
33933 utils.toArray = toArray;
33934
33935 function toHex(msg) {
33936 var res = '';
33937 for (var i = 0; i < msg.length; i++)
33938 res += zero2(msg[i].toString(16));
33939 return res;
33940 }
33941 utils.toHex = toHex;
33942
33943 function htonl(w) {
33944 var res = (w >>> 24) |
33945 ((w >>> 8) & 0xff00) |
33946 ((w << 8) & 0xff0000) |
33947 ((w & 0xff) << 24);
33948 return res >>> 0;
33949 }
33950 utils.htonl = htonl;
33951
33952 function toHex32(msg, endian) {
33953 var res = '';
33954 for (var i = 0; i < msg.length; i++) {
33955 var w = msg[i];
33956 if (endian === 'little')
33957 w = htonl(w);
33958 res += zero8(w.toString(16));
33959 }
33960 return res;
33961 }
33962 utils.toHex32 = toHex32;
33963
33964 function zero2(word) {
33965 if (word.length === 1)
33966 return '0' + word;
33967 else
33968 return word;
33969 }
33970 utils.zero2 = zero2;
33971
33972 function zero8(word) {
33973 if (word.length === 7)
33974 return '0' + word;
33975 else if (word.length === 6)
33976 return '00' + word;
33977 else if (word.length === 5)
33978 return '000' + word;
33979 else if (word.length === 4)
33980 return '0000' + word;
33981 else if (word.length === 3)
33982 return '00000' + word;
33983 else if (word.length === 2)
33984 return '000000' + word;
33985 else if (word.length === 1)
33986 return '0000000' + word;
33987 else
33988 return word;
33989 }
33990 utils.zero8 = zero8;
33991
33992 function join32(msg, start, end, endian) {
33993 var len = end - start;
33994 assert(len % 4 === 0);
33995 var res = new Array(len / 4);
33996 for (var i = 0, k = start; i < res.length; i++, k += 4) {
33997 var w;
33998 if (endian === 'big')
33999 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
34000 else
34001 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
34002 res[i] = w >>> 0;
34003 }
34004 return res;
34005 }
34006 utils.join32 = join32;
34007
34008 function split32(msg, endian) {
34009 var res = new Array(msg.length * 4);
34010 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
34011 var m = msg[i];
34012 if (endian === 'big') {
34013 res[k] = m >>> 24;
34014 res[k + 1] = (m >>> 16) & 0xff;
34015 res[k + 2] = (m >>> 8) & 0xff;
34016 res[k + 3] = m & 0xff;
34017 } else {
34018 res[k + 3] = m >>> 24;
34019 res[k + 2] = (m >>> 16) & 0xff;
34020 res[k + 1] = (m >>> 8) & 0xff;
34021 res[k] = m & 0xff;
34022 }
34023 }
34024 return res;
34025 }
34026 utils.split32 = split32;
34027
34028 function rotr32(w, b) {
34029 return (w >>> b) | (w << (32 - b));
34030 }
34031 utils.rotr32 = rotr32;
34032
34033 function rotl32(w, b) {
34034 return (w << b) | (w >>> (32 - b));
34035 }
34036 utils.rotl32 = rotl32;
34037
34038 function sum32(a, b) {
34039 return (a + b) >>> 0;
34040 }
34041 utils.sum32 = sum32;
34042
34043 function sum32_3(a, b, c) {
34044 return (a + b + c) >>> 0;
34045 }
34046 utils.sum32_3 = sum32_3;
34047
34048 function sum32_4(a, b, c, d) {
34049 return (a + b + c + d) >>> 0;
34050 }
34051 utils.sum32_4 = sum32_4;
34052
34053 function sum32_5(a, b, c, d, e) {
34054 return (a + b + c + d + e) >>> 0;
34055 }
34056 utils.sum32_5 = sum32_5;
34057
34058 function assert(cond, msg) {
34059 if (!cond)
34060 throw new Error(msg || 'Assertion failed');
34061 }
34062 utils.assert = assert;
34063
34064 utils.inherits = inherits;
34065
34066 function sum64(buf, pos, ah, al) {
34067 var bh = buf[pos];
34068 var bl = buf[pos + 1];
34069
34070 var lo = (al + bl) >>> 0;
34071 var hi = (lo < al ? 1 : 0) + ah + bh;
34072 buf[pos] = hi >>> 0;
34073 buf[pos + 1] = lo;
34074 }
34075 exports.sum64 = sum64;
34076
34077 function sum64_hi(ah, al, bh, bl) {
34078 var lo = (al + bl) >>> 0;
34079 var hi = (lo < al ? 1 : 0) + ah + bh;
34080 return hi >>> 0;
34081 };
34082 exports.sum64_hi = sum64_hi;
34083
34084 function sum64_lo(ah, al, bh, bl) {
34085 var lo = al + bl;
34086 return lo >>> 0;
34087 };
34088 exports.sum64_lo = sum64_lo;
34089
34090 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
34091 var carry = 0;
34092 var lo = al;
34093 lo = (lo + bl) >>> 0;
34094 carry += lo < al ? 1 : 0;
34095 lo = (lo + cl) >>> 0;
34096 carry += lo < cl ? 1 : 0;
34097 lo = (lo + dl) >>> 0;
34098 carry += lo < dl ? 1 : 0;
34099
34100 var hi = ah + bh + ch + dh + carry;
34101 return hi >>> 0;
34102 };
34103 exports.sum64_4_hi = sum64_4_hi;
34104
34105 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
34106 var lo = al + bl + cl + dl;
34107 return lo >>> 0;
34108 };
34109 exports.sum64_4_lo = sum64_4_lo;
34110
34111 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
34112 var carry = 0;
34113 var lo = al;
34114 lo = (lo + bl) >>> 0;
34115 carry += lo < al ? 1 : 0;
34116 lo = (lo + cl) >>> 0;
34117 carry += lo < cl ? 1 : 0;
34118 lo = (lo + dl) >>> 0;
34119 carry += lo < dl ? 1 : 0;
34120 lo = (lo + el) >>> 0;
34121 carry += lo < el ? 1 : 0;
34122
34123 var hi = ah + bh + ch + dh + eh + carry;
34124 return hi >>> 0;
34125 };
34126 exports.sum64_5_hi = sum64_5_hi;
34127
34128 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
34129 var lo = al + bl + cl + dl + el;
34130
34131 return lo >>> 0;
34132 };
34133 exports.sum64_5_lo = sum64_5_lo;
34134
34135 function rotr64_hi(ah, al, num) {
34136 var r = (al << (32 - num)) | (ah >>> num);
34137 return r >>> 0;
34138 };
34139 exports.rotr64_hi = rotr64_hi;
34140
34141 function rotr64_lo(ah, al, num) {
34142 var r = (ah << (32 - num)) | (al >>> num);
34143 return r >>> 0;
34144 };
34145 exports.rotr64_lo = rotr64_lo;
34146
34147 function shr64_hi(ah, al, num) {
34148 return ah >>> num;
34149 };
34150 exports.shr64_hi = shr64_hi;
34151
34152 function shr64_lo(ah, al, num) {
34153 var r = (ah << (32 - num)) | (al >>> num);
34154 return r >>> 0;
34155 };
34156 exports.shr64_lo = shr64_lo;
34157
34158 },{"inherits":63}],63:[function(require,module,exports){
34159 arguments[4][9][0].apply(exports,arguments)
34160 },{"dup":9}],64:[function(require,module,exports){
34161 /**
34162 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
34163 * @param {String} str the string input value
34164 * @return {Boolean} a boolean if it is or is not hex prefixed
34165 * @throws if the str input is not a string
34166 */
34167 module.exports = function isHexPrefixed(str) {
34168 if (typeof str !== 'string') {
34169 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
34170 }
34171
34172 return str.slice(0, 2) === '0x';
34173 }
34174
34175 },{}],65:[function(require,module,exports){
34176 'use strict'
34177 module.exports = require('./lib/api')(require('./lib/keccak'))
34178
34179 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
34180 'use strict'
34181 var createKeccak = require('./keccak')
34182 var createShake = require('./shake')
34183
34184 module.exports = function (KeccakState) {
34185 var Keccak = createKeccak(KeccakState)
34186 var Shake = createShake(KeccakState)
34187
34188 return function (algorithm, options) {
34189 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
34190 switch (hash) {
34191 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
34192 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
34193 case 'keccak384': return new Keccak(832, 768, null, 384, options)
34194 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
34195
34196 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
34197 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
34198 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
34199 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
34200
34201 case 'shake128': return new Shake(1344, 256, 0x1f, options)
34202 case 'shake256': return new Shake(1088, 512, 0x1f, options)
34203
34204 default: throw new Error('Invald algorithm: ' + algorithm)
34205 }
34206 }
34207 }
34208
34209 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
34210 (function (Buffer){
34211 'use strict'
34212 var Transform = require('stream').Transform
34213 var inherits = require('inherits')
34214
34215 module.exports = function (KeccakState) {
34216 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
34217 Transform.call(this, options)
34218
34219 this._rate = rate
34220 this._capacity = capacity
34221 this._delimitedSuffix = delimitedSuffix
34222 this._hashBitLength = hashBitLength
34223 this._options = options
34224
34225 this._state = new KeccakState()
34226 this._state.initialize(rate, capacity)
34227 this._finalized = false
34228 }
34229
34230 inherits(Keccak, Transform)
34231
34232 Keccak.prototype._transform = function (chunk, encoding, callback) {
34233 var error = null
34234 try {
34235 this.update(chunk, encoding)
34236 } catch (err) {
34237 error = err
34238 }
34239
34240 callback(error)
34241 }
34242
34243 Keccak.prototype._flush = function (callback) {
34244 var error = null
34245 try {
34246 this.push(this.digest())
34247 } catch (err) {
34248 error = err
34249 }
34250
34251 callback(error)
34252 }
34253
34254 Keccak.prototype.update = function (data, encoding) {
34255 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
34256 if (this._finalized) throw new Error('Digest already called')
34257 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
34258
34259 this._state.absorb(data)
34260
34261 return this
34262 }
34263
34264 Keccak.prototype.digest = function (encoding) {
34265 if (this._finalized) throw new Error('Digest already called')
34266 this._finalized = true
34267
34268 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
34269 var digest = this._state.squeeze(this._hashBitLength / 8)
34270 if (encoding !== undefined) digest = digest.toString(encoding)
34271
34272 this._resetState()
34273
34274 return digest
34275 }
34276
34277 // remove result from memory
34278 Keccak.prototype._resetState = function () {
34279 this._state.initialize(this._rate, this._capacity)
34280 return this
34281 }
34282
34283 // because sometimes we need hash right now and little later
34284 Keccak.prototype._clone = function () {
34285 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
34286 this._state.copy(clone._state)
34287 clone._finalized = this._finalized
34288
34289 return clone
34290 }
34291
34292 return Keccak
34293 }
34294
34295 }).call(this,require("buffer").Buffer)
34296 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
34297 (function (Buffer){
34298 'use strict'
34299 var Transform = require('stream').Transform
34300 var inherits = require('inherits')
34301
34302 module.exports = function (KeccakState) {
34303 function Shake (rate, capacity, delimitedSuffix, options) {
34304 Transform.call(this, options)
34305
34306 this._rate = rate
34307 this._capacity = capacity
34308 this._delimitedSuffix = delimitedSuffix
34309 this._options = options
34310
34311 this._state = new KeccakState()
34312 this._state.initialize(rate, capacity)
34313 this._finalized = false
34314 }
34315
34316 inherits(Shake, Transform)
34317
34318 Shake.prototype._transform = function (chunk, encoding, callback) {
34319 var error = null
34320 try {
34321 this.update(chunk, encoding)
34322 } catch (err) {
34323 error = err
34324 }
34325
34326 callback(error)
34327 }
34328
34329 Shake.prototype._flush = function () {}
34330
34331 Shake.prototype._read = function (size) {
34332 this.push(this.squeeze(size))
34333 }
34334
34335 Shake.prototype.update = function (data, encoding) {
34336 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
34337 if (this._finalized) throw new Error('Squeeze already called')
34338 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
34339
34340 this._state.absorb(data)
34341
34342 return this
34343 }
34344
34345 Shake.prototype.squeeze = function (dataByteLength, encoding) {
34346 if (!this._finalized) {
34347 this._finalized = true
34348 this._state.absorbLastFewBits(this._delimitedSuffix)
34349 }
34350
34351 var data = this._state.squeeze(dataByteLength)
34352 if (encoding !== undefined) data = data.toString(encoding)
34353
34354 return data
34355 }
34356
34357 Shake.prototype._resetState = function () {
34358 this._state.initialize(this._rate, this._capacity)
34359 return this
34360 }
34361
34362 Shake.prototype._clone = function () {
34363 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
34364 this._state.copy(clone._state)
34365 clone._finalized = this._finalized
34366
34367 return clone
34368 }
34369
34370 return Shake
34371 }
34372
34373 }).call(this,require("buffer").Buffer)
34374 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
34375 'use strict'
34376 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]
34377
34378 exports.p1600 = function (s) {
34379 for (var round = 0; round < 24; ++round) {
34380 // theta
34381 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
34382 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
34383 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
34384 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
34385 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
34386 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
34387 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
34388 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
34389 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
34390 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
34391
34392 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
34393 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
34394 var t1slo0 = s[0] ^ lo
34395 var t1shi0 = s[1] ^ hi
34396 var t1slo5 = s[10] ^ lo
34397 var t1shi5 = s[11] ^ hi
34398 var t1slo10 = s[20] ^ lo
34399 var t1shi10 = s[21] ^ hi
34400 var t1slo15 = s[30] ^ lo
34401 var t1shi15 = s[31] ^ hi
34402 var t1slo20 = s[40] ^ lo
34403 var t1shi20 = s[41] ^ hi
34404 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
34405 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
34406 var t1slo1 = s[2] ^ lo
34407 var t1shi1 = s[3] ^ hi
34408 var t1slo6 = s[12] ^ lo
34409 var t1shi6 = s[13] ^ hi
34410 var t1slo11 = s[22] ^ lo
34411 var t1shi11 = s[23] ^ hi
34412 var t1slo16 = s[32] ^ lo
34413 var t1shi16 = s[33] ^ hi
34414 var t1slo21 = s[42] ^ lo
34415 var t1shi21 = s[43] ^ hi
34416 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
34417 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
34418 var t1slo2 = s[4] ^ lo
34419 var t1shi2 = s[5] ^ hi
34420 var t1slo7 = s[14] ^ lo
34421 var t1shi7 = s[15] ^ hi
34422 var t1slo12 = s[24] ^ lo
34423 var t1shi12 = s[25] ^ hi
34424 var t1slo17 = s[34] ^ lo
34425 var t1shi17 = s[35] ^ hi
34426 var t1slo22 = s[44] ^ lo
34427 var t1shi22 = s[45] ^ hi
34428 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
34429 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
34430 var t1slo3 = s[6] ^ lo
34431 var t1shi3 = s[7] ^ hi
34432 var t1slo8 = s[16] ^ lo
34433 var t1shi8 = s[17] ^ hi
34434 var t1slo13 = s[26] ^ lo
34435 var t1shi13 = s[27] ^ hi
34436 var t1slo18 = s[36] ^ lo
34437 var t1shi18 = s[37] ^ hi
34438 var t1slo23 = s[46] ^ lo
34439 var t1shi23 = s[47] ^ hi
34440 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
34441 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
34442 var t1slo4 = s[8] ^ lo
34443 var t1shi4 = s[9] ^ hi
34444 var t1slo9 = s[18] ^ lo
34445 var t1shi9 = s[19] ^ hi
34446 var t1slo14 = s[28] ^ lo
34447 var t1shi14 = s[29] ^ hi
34448 var t1slo19 = s[38] ^ lo
34449 var t1shi19 = s[39] ^ hi
34450 var t1slo24 = s[48] ^ lo
34451 var t1shi24 = s[49] ^ hi
34452
34453 // rho & pi
34454 var t2slo0 = t1slo0
34455 var t2shi0 = t1shi0
34456 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
34457 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
34458 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
34459 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
34460 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
34461 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
34462 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
34463 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
34464 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
34465 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
34466 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
34467 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
34468 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
34469 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
34470 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
34471 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
34472 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
34473 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
34474 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
34475 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
34476 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
34477 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
34478 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
34479 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
34480 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
34481 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
34482 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
34483 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
34484 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
34485 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
34486 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
34487 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
34488 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
34489 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
34490 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
34491 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
34492 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
34493 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
34494 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
34495 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
34496 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
34497 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
34498 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
34499 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
34500 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
34501 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
34502 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
34503 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
34504
34505 // chi
34506 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
34507 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
34508 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
34509 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
34510 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
34511 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
34512 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
34513 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
34514 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
34515 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
34516 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
34517 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
34518 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
34519 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
34520 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
34521 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
34522 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
34523 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
34524 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
34525 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
34526 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
34527 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
34528 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
34529 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
34530 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
34531 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
34532 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
34533 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
34534 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
34535 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
34536 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
34537 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
34538 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
34539 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
34540 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
34541 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
34542 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
34543 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
34544 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
34545 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
34546 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
34547 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
34548 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
34549 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
34550 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
34551 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
34552 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
34553 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
34554 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
34555 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
34556
34557 // iota
34558 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
34559 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
34560 }
34561 }
34562
34563 },{}],70:[function(require,module,exports){
34564 (function (Buffer){
34565 'use strict'
34566 var keccakState = require('./keccak-state-unroll')
34567
34568 function Keccak () {
34569 // much faster than `new Array(50)`
34570 this.state = [
34571 0, 0, 0, 0, 0,
34572 0, 0, 0, 0, 0,
34573 0, 0, 0, 0, 0,
34574 0, 0, 0, 0, 0,
34575 0, 0, 0, 0, 0
34576 ]
34577
34578 this.blockSize = null
34579 this.count = 0
34580 this.squeezing = false
34581 }
34582
34583 Keccak.prototype.initialize = function (rate, capacity) {
34584 for (var i = 0; i < 50; ++i) this.state[i] = 0
34585 this.blockSize = rate / 8
34586 this.count = 0
34587 this.squeezing = false
34588 }
34589
34590 Keccak.prototype.absorb = function (data) {
34591 for (var i = 0; i < data.length; ++i) {
34592 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
34593 this.count += 1
34594 if (this.count === this.blockSize) {
34595 keccakState.p1600(this.state)
34596 this.count = 0
34597 }
34598 }
34599 }
34600
34601 Keccak.prototype.absorbLastFewBits = function (bits) {
34602 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
34603 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
34604 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
34605 keccakState.p1600(this.state)
34606 this.count = 0
34607 this.squeezing = true
34608 }
34609
34610 Keccak.prototype.squeeze = function (length) {
34611 if (!this.squeezing) this.absorbLastFewBits(0x01)
34612
34613 var output = Buffer.allocUnsafe(length)
34614 for (var i = 0; i < length; ++i) {
34615 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
34616 this.count += 1
34617 if (this.count === this.blockSize) {
34618 keccakState.p1600(this.state)
34619 this.count = 0
34620 }
34621 }
34622
34623 return output
34624 }
34625
34626 Keccak.prototype.copy = function (dest) {
34627 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
34628 dest.blockSize = this.blockSize
34629 dest.count = this.count
34630 dest.squeezing = this.squeezing
34631 }
34632
34633 module.exports = Keccak
34634
34635 }).call(this,require("buffer").Buffer)
34636 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
34637 (function (Buffer){
34638 /*
34639 CryptoJS v3.1.2
34640 code.google.com/p/crypto-js
34641 (c) 2009-2013 by Jeff Mott. All rights reserved.
34642 code.google.com/p/crypto-js/wiki/License
34643 */
34644 /** @preserve
34645 (c) 2012 by Cédric Mesnil. All rights reserved.
34646
34647 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
34648
34649 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
34650 - 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.
34651
34652 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.
34653 */
34654
34655 // constants table
34656 var zl = [
34657 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
34658 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
34659 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
34660 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
34661 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
34662 ]
34663
34664 var zr = [
34665 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
34666 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
34667 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
34668 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
34669 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
34670 ]
34671
34672 var sl = [
34673 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
34674 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
34675 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
34676 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
34677 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
34678 ]
34679
34680 var sr = [
34681 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
34682 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
34683 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
34684 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
34685 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
34686 ]
34687
34688 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
34689 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
34690
34691 function bytesToWords (bytes) {
34692 var words = []
34693 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
34694 words[b >>> 5] |= bytes[i] << (24 - b % 32)
34695 }
34696 return words
34697 }
34698
34699 function wordsToBytes (words) {
34700 var bytes = []
34701 for (var b = 0; b < words.length * 32; b += 8) {
34702 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
34703 }
34704 return bytes
34705 }
34706
34707 function processBlock (H, M, offset) {
34708 // swap endian
34709 for (var i = 0; i < 16; i++) {
34710 var offset_i = offset + i
34711 var M_offset_i = M[offset_i]
34712
34713 // Swap
34714 M[offset_i] = (
34715 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
34716 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
34717 )
34718 }
34719
34720 // Working variables
34721 var al, bl, cl, dl, el
34722 var ar, br, cr, dr, er
34723
34724 ar = al = H[0]
34725 br = bl = H[1]
34726 cr = cl = H[2]
34727 dr = dl = H[3]
34728 er = el = H[4]
34729
34730 // computation
34731 var t
34732 for (i = 0; i < 80; i += 1) {
34733 t = (al + M[offset + zl[i]]) | 0
34734 if (i < 16) {
34735 t += f1(bl, cl, dl) + hl[0]
34736 } else if (i < 32) {
34737 t += f2(bl, cl, dl) + hl[1]
34738 } else if (i < 48) {
34739 t += f3(bl, cl, dl) + hl[2]
34740 } else if (i < 64) {
34741 t += f4(bl, cl, dl) + hl[3]
34742 } else {// if (i<80) {
34743 t += f5(bl, cl, dl) + hl[4]
34744 }
34745 t = t | 0
34746 t = rotl(t, sl[i])
34747 t = (t + el) | 0
34748 al = el
34749 el = dl
34750 dl = rotl(cl, 10)
34751 cl = bl
34752 bl = t
34753
34754 t = (ar + M[offset + zr[i]]) | 0
34755 if (i < 16) {
34756 t += f5(br, cr, dr) + hr[0]
34757 } else if (i < 32) {
34758 t += f4(br, cr, dr) + hr[1]
34759 } else if (i < 48) {
34760 t += f3(br, cr, dr) + hr[2]
34761 } else if (i < 64) {
34762 t += f2(br, cr, dr) + hr[3]
34763 } else {// if (i<80) {
34764 t += f1(br, cr, dr) + hr[4]
34765 }
34766
34767 t = t | 0
34768 t = rotl(t, sr[i])
34769 t = (t + er) | 0
34770 ar = er
34771 er = dr
34772 dr = rotl(cr, 10)
34773 cr = br
34774 br = t
34775 }
34776
34777 // intermediate hash value
34778 t = (H[1] + cl + dr) | 0
34779 H[1] = (H[2] + dl + er) | 0
34780 H[2] = (H[3] + el + ar) | 0
34781 H[3] = (H[4] + al + br) | 0
34782 H[4] = (H[0] + bl + cr) | 0
34783 H[0] = t
34784 }
34785
34786 function f1 (x, y, z) {
34787 return ((x) ^ (y) ^ (z))
34788 }
34789
34790 function f2 (x, y, z) {
34791 return (((x) & (y)) | ((~x) & (z)))
34792 }
34793
34794 function f3 (x, y, z) {
34795 return (((x) | (~(y))) ^ (z))
34796 }
34797
34798 function f4 (x, y, z) {
34799 return (((x) & (z)) | ((y) & (~(z))))
34800 }
34801
34802 function f5 (x, y, z) {
34803 return ((x) ^ ((y) | (~(z))))
34804 }
34805
34806 function rotl (x, n) {
34807 return (x << n) | (x >>> (32 - n))
34808 }
34809
34810 function ripemd160 (message) {
34811 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
34812
34813 if (typeof message === 'string') {
34814 message = new Buffer(message, 'utf8')
34815 }
34816
34817 var m = bytesToWords(message)
34818
34819 var nBitsLeft = message.length * 8
34820 var nBitsTotal = message.length * 8
34821
34822 // Add padding
34823 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
34824 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
34825 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
34826 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
34827 )
34828
34829 for (var i = 0; i < m.length; i += 16) {
34830 processBlock(H, m, i)
34831 }
34832
34833 // swap endian
34834 for (i = 0; i < 5; i++) {
34835 // shortcut
34836 var H_i = H[i]
34837
34838 // Swap
34839 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
34840 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
34841 }
34842
34843 var digestbytes = wordsToBytes(H)
34844 return new Buffer(digestbytes)
34845 }
34846
34847 module.exports = ripemd160
34848
34849 }).call(this,require("buffer").Buffer)
34850 },{"buffer":5}],72:[function(require,module,exports){
34851 (function (Buffer){
34852 const assert = require('assert')
34853 /**
34854 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
34855 * This function takes in a data, convert it to buffer if not, and a length for recursion
34856 *
34857 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
34858 * @returns {Buffer} - returns buffer of encoded data
34859 **/
34860 exports.encode = function (input) {
34861 if (input instanceof Array) {
34862 var output = []
34863 for (var i = 0; i < input.length; i++) {
34864 output.push(exports.encode(input[i]))
34865 }
34866 var buf = Buffer.concat(output)
34867 return Buffer.concat([encodeLength(buf.length, 192), buf])
34868 } else {
34869 input = toBuffer(input)
34870 if (input.length === 1 && input[0] < 128) {
34871 return input
34872 } else {
34873 return Buffer.concat([encodeLength(input.length, 128), input])
34874 }
34875 }
34876 }
34877
34878 function safeParseInt (v, base) {
34879 if (v.slice(0, 2) === '00') {
34880 throw (new Error('invalid RLP: extra zeros'))
34881 }
34882
34883 return parseInt(v, base)
34884 }
34885
34886 function encodeLength (len, offset) {
34887 if (len < 56) {
34888 return new Buffer([len + offset])
34889 } else {
34890 var hexLength = intToHex(len)
34891 var lLength = hexLength.length / 2
34892 var firstByte = intToHex(offset + 55 + lLength)
34893 return new Buffer(firstByte + hexLength, 'hex')
34894 }
34895 }
34896
34897 /**
34898 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
34899 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
34900 * @returns {Array} - returns decode Array of Buffers containg the original message
34901 **/
34902 exports.decode = function (input, stream) {
34903 if (!input || input.length === 0) {
34904 return new Buffer([])
34905 }
34906
34907 input = toBuffer(input)
34908 var decoded = _decode(input)
34909
34910 if (stream) {
34911 return decoded
34912 }
34913
34914 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
34915 return decoded.data
34916 }
34917
34918 exports.getLength = function (input) {
34919 if (!input || input.length === 0) {
34920 return new Buffer([])
34921 }
34922
34923 input = toBuffer(input)
34924 var firstByte = input[0]
34925 if (firstByte <= 0x7f) {
34926 return input.length
34927 } else if (firstByte <= 0xb7) {
34928 return firstByte - 0x7f
34929 } else if (firstByte <= 0xbf) {
34930 return firstByte - 0xb6
34931 } else if (firstByte <= 0xf7) {
34932 // a list between 0-55 bytes long
34933 return firstByte - 0xbf
34934 } else {
34935 // a list over 55 bytes long
34936 var llength = firstByte - 0xf6
34937 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
34938 return llength + length
34939 }
34940 }
34941
34942 function _decode (input) {
34943 var length, llength, data, innerRemainder, d
34944 var decoded = []
34945 var firstByte = input[0]
34946
34947 if (firstByte <= 0x7f) {
34948 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
34949 return {
34950 data: input.slice(0, 1),
34951 remainder: input.slice(1)
34952 }
34953 } else if (firstByte <= 0xb7) {
34954 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
34955 // The range of the first byte is [0x80, 0xb7]
34956 length = firstByte - 0x7f
34957
34958 // set 0x80 null to 0
34959 if (firstByte === 0x80) {
34960 data = new Buffer([])
34961 } else {
34962 data = input.slice(1, length)
34963 }
34964
34965 if (length === 2 && data[0] < 0x80) {
34966 throw new Error('invalid rlp encoding: byte must be less 0x80')
34967 }
34968
34969 return {
34970 data: data,
34971 remainder: input.slice(length)
34972 }
34973 } else if (firstByte <= 0xbf) {
34974 llength = firstByte - 0xb6
34975 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
34976 data = input.slice(llength, length + llength)
34977 if (data.length < length) {
34978 throw (new Error('invalid RLP'))
34979 }
34980
34981 return {
34982 data: data,
34983 remainder: input.slice(length + llength)
34984 }
34985 } else if (firstByte <= 0xf7) {
34986 // a list between 0-55 bytes long
34987 length = firstByte - 0xbf
34988 innerRemainder = input.slice(1, length)
34989 while (innerRemainder.length) {
34990 d = _decode(innerRemainder)
34991 decoded.push(d.data)
34992 innerRemainder = d.remainder
34993 }
34994
34995 return {
34996 data: decoded,
34997 remainder: input.slice(length)
34998 }
34999 } else {
35000 // a list over 55 bytes long
35001 llength = firstByte - 0xf6
35002 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
35003 var totalLength = llength + length
35004 if (totalLength > input.length) {
35005 throw new Error('invalid rlp: total length is larger than the data')
35006 }
35007
35008 innerRemainder = input.slice(llength, totalLength)
35009 if (innerRemainder.length === 0) {
35010 throw new Error('invalid rlp, List has a invalid length')
35011 }
35012
35013 while (innerRemainder.length) {
35014 d = _decode(innerRemainder)
35015 decoded.push(d.data)
35016 innerRemainder = d.remainder
35017 }
35018 return {
35019 data: decoded,
35020 remainder: input.slice(totalLength)
35021 }
35022 }
35023 }
35024
35025 function isHexPrefixed (str) {
35026 return str.slice(0, 2) === '0x'
35027 }
35028
35029 // Removes 0x from a given String
35030 function stripHexPrefix (str) {
35031 if (typeof str !== 'string') {
35032 return str
35033 }
35034 return isHexPrefixed(str) ? str.slice(2) : str
35035 }
35036
35037 function intToHex (i) {
35038 var hex = i.toString(16)
35039 if (hex.length % 2) {
35040 hex = '0' + hex
35041 }
35042
35043 return hex
35044 }
35045
35046 function padToEven (a) {
35047 if (a.length % 2) a = '0' + a
35048 return a
35049 }
35050
35051 function intToBuffer (i) {
35052 var hex = intToHex(i)
35053 return new Buffer(hex, 'hex')
35054 }
35055
35056 function toBuffer (v) {
35057 if (!Buffer.isBuffer(v)) {
35058 if (typeof v === 'string') {
35059 if (isHexPrefixed(v)) {
35060 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
35061 } else {
35062 v = new Buffer(v)
35063 }
35064 } else if (typeof v === 'number') {
35065 if (!v) {
35066 v = new Buffer([])
35067 } else {
35068 v = intToBuffer(v)
35069 }
35070 } else if (v === null || v === undefined) {
35071 v = new Buffer([])
35072 } else if (v.toArray) {
35073 // converts a BN to a Buffer
35074 v = new Buffer(v.toArray())
35075 } else {
35076 throw new Error('invalid type')
35077 }
35078 }
35079 return v
35080 }
35081
35082 }).call(this,require("buffer").Buffer)
35083 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
35084 'use strict'
35085 module.exports = require('./lib')(require('./lib/elliptic'))
35086
35087 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
35088 (function (Buffer){
35089 'use strict'
35090 var toString = Object.prototype.toString
35091
35092 // TypeError
35093 exports.isArray = function (value, message) {
35094 if (!Array.isArray(value)) throw TypeError(message)
35095 }
35096
35097 exports.isBoolean = function (value, message) {
35098 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
35099 }
35100
35101 exports.isBuffer = function (value, message) {
35102 if (!Buffer.isBuffer(value)) throw TypeError(message)
35103 }
35104
35105 exports.isFunction = function (value, message) {
35106 if (toString.call(value) !== '[object Function]') throw TypeError(message)
35107 }
35108
35109 exports.isNumber = function (value, message) {
35110 if (toString.call(value) !== '[object Number]') throw TypeError(message)
35111 }
35112
35113 exports.isObject = function (value, message) {
35114 if (toString.call(value) !== '[object Object]') throw TypeError(message)
35115 }
35116
35117 // RangeError
35118 exports.isBufferLength = function (buffer, length, message) {
35119 if (buffer.length !== length) throw RangeError(message)
35120 }
35121
35122 exports.isBufferLength2 = function (buffer, length1, length2, message) {
35123 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
35124 }
35125
35126 exports.isLengthGTZero = function (value, message) {
35127 if (value.length === 0) throw RangeError(message)
35128 }
35129
35130 exports.isNumberInInterval = function (number, x, y, message) {
35131 if (number <= x || number >= y) throw RangeError(message)
35132 }
35133
35134 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
35135 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
35136 (function (Buffer){
35137 'use strict'
35138 var bip66 = require('bip66')
35139
35140 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
35141 // begin
35142 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
35143 // private key
35144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35146 // middle
35147 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
35148 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35149 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35150 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
35151 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
35152 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
35153 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35154 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
35155 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
35156 // public key
35157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35159 0x00
35160 ])
35161
35162 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
35163 // begin
35164 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
35165 // private key
35166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35168 // middle
35169 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
35170 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35171 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35172 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
35173 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
35174 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
35175 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
35176 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
35177 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35178 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
35179 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
35180 // public key
35181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35185 0x00
35186 ])
35187
35188 var ZERO_BUFFER_32 = new Buffer([
35189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
35191 ])
35192
35193 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
35194 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
35195 privateKey.copy(result, compressed ? 8 : 9)
35196 publicKey.copy(result, compressed ? 181 : 214)
35197 return result
35198 }
35199
35200 exports.privateKeyImport = function (privateKey) {
35201 var length = privateKey.length
35202
35203 // sequence header
35204 var index = 0
35205 if (length < index + 1 || privateKey[index] !== 0x30) return
35206 index += 1
35207
35208 // sequence length constructor
35209 if (length < index + 1 || !(privateKey[index] & 0x80)) return
35210
35211 var lenb = privateKey[index] & 0x7f
35212 index += 1
35213 if (lenb < 1 || lenb > 2) return
35214 if (length < index + lenb) return
35215
35216 // sequence length
35217 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
35218 index += lenb
35219 if (length < index + len) return
35220
35221 // sequence element 0: version number (=1)
35222 if (length < index + 3 ||
35223 privateKey[index] !== 0x02 ||
35224 privateKey[index + 1] !== 0x01 ||
35225 privateKey[index + 2] !== 0x01) {
35226 return
35227 }
35228 index += 3
35229
35230 // sequence element 1: octet string, up to 32 bytes
35231 if (length < index + 2 ||
35232 privateKey[index] !== 0x04 ||
35233 privateKey[index + 1] > 0x20 ||
35234 length < index + 2 + privateKey[index + 1]) {
35235 return
35236 }
35237
35238 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
35239 }
35240
35241 exports.signatureExport = function (sigObj) {
35242 var r = Buffer.concat([new Buffer([0]), sigObj.r])
35243 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
35244
35245 var s = Buffer.concat([new Buffer([0]), sigObj.s])
35246 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
35247
35248 return bip66.encode(r.slice(posR), s.slice(posS))
35249 }
35250
35251 exports.signatureImport = function (sig) {
35252 var r = new Buffer(ZERO_BUFFER_32)
35253 var s = new Buffer(ZERO_BUFFER_32)
35254
35255 try {
35256 var sigObj = bip66.decode(sig)
35257 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
35258 if (sigObj.r.length > 32) throw new Error('R length is too long')
35259 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
35260 if (sigObj.s.length > 32) throw new Error('S length is too long')
35261 } catch (err) {
35262 return
35263 }
35264
35265 sigObj.r.copy(r, 32 - sigObj.r.length)
35266 sigObj.s.copy(s, 32 - sigObj.s.length)
35267
35268 return { r: r, s: s }
35269 }
35270
35271 exports.signatureImportLax = function (sig) {
35272 var r = new Buffer(ZERO_BUFFER_32)
35273 var s = new Buffer(ZERO_BUFFER_32)
35274
35275 var length = sig.length
35276 var index = 0
35277
35278 // sequence tag byte
35279 if (sig[index++] !== 0x30) return
35280
35281 // sequence length byte
35282 var lenbyte = sig[index++]
35283 if (lenbyte & 0x80) {
35284 index += lenbyte - 0x80
35285 if (index > length) return
35286 }
35287
35288 // sequence tag byte for r
35289 if (sig[index++] !== 0x02) return
35290
35291 // length for r
35292 var rlen = sig[index++]
35293 if (rlen & 0x80) {
35294 lenbyte = rlen - 0x80
35295 if (index + lenbyte > length) return
35296 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
35297 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
35298 }
35299 if (rlen > length - index) return
35300 var rindex = index
35301 index += rlen
35302
35303 // sequence tag byte for s
35304 if (sig[index++] !== 0x02) return
35305
35306 // length for s
35307 var slen = sig[index++]
35308 if (slen & 0x80) {
35309 lenbyte = slen - 0x80
35310 if (index + lenbyte > length) return
35311 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
35312 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
35313 }
35314 if (slen > length - index) return
35315 var sindex = index
35316 index += slen
35317
35318 // ignore leading zeros in r
35319 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
35320 // copy r value
35321 if (rlen > 32) return
35322 var rvalue = sig.slice(rindex, rindex + rlen)
35323 rvalue.copy(r, 32 - rvalue.length)
35324
35325 // ignore leading zeros in s
35326 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
35327 // copy s value
35328 if (slen > 32) return
35329 var svalue = sig.slice(sindex, sindex + slen)
35330 svalue.copy(s, 32 - svalue.length)
35331
35332 return { r: r, s: s }
35333 }
35334
35335 }).call(this,require("buffer").Buffer)
35336 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
35337 (function (Buffer){
35338 'use strict'
35339 var createHash = require('create-hash')
35340 var BN = require('bn.js')
35341 var EC = require('elliptic').ec
35342
35343 var messages = require('../messages.json')
35344
35345 var ec = new EC('secp256k1')
35346 var ecparams = ec.curve
35347
35348 function loadCompressedPublicKey (first, xBuffer) {
35349 var x = new BN(xBuffer)
35350
35351 // overflow
35352 if (x.cmp(ecparams.p) >= 0) return null
35353 x = x.toRed(ecparams.red)
35354
35355 // compute corresponding Y
35356 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
35357 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
35358
35359 return ec.keyPair({ pub: { x: x, y: y } })
35360 }
35361
35362 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
35363 var x = new BN(xBuffer)
35364 var y = new BN(yBuffer)
35365
35366 // overflow
35367 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
35368
35369 x = x.toRed(ecparams.red)
35370 y = y.toRed(ecparams.red)
35371
35372 // is odd flag
35373 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
35374
35375 // x*x*x + b = y*y
35376 var x3 = x.redSqr().redIMul(x)
35377 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
35378
35379 return ec.keyPair({ pub: { x: x, y: y } })
35380 }
35381
35382 function loadPublicKey (publicKey) {
35383 var first = publicKey[0]
35384 switch (first) {
35385 case 0x02:
35386 case 0x03:
35387 if (publicKey.length !== 33) return null
35388 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
35389 case 0x04:
35390 case 0x06:
35391 case 0x07:
35392 if (publicKey.length !== 65) return null
35393 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
35394 default:
35395 return null
35396 }
35397 }
35398
35399 exports.privateKeyVerify = function (privateKey) {
35400 var bn = new BN(privateKey)
35401 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
35402 }
35403
35404 exports.privateKeyExport = function (privateKey, compressed) {
35405 var d = new BN(privateKey)
35406 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
35407
35408 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
35409 }
35410
35411 exports.privateKeyTweakAdd = function (privateKey, tweak) {
35412 var bn = new BN(tweak)
35413 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
35414
35415 bn.iadd(new BN(privateKey))
35416 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
35417 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
35418
35419 return bn.toArrayLike(Buffer, 'be', 32)
35420 }
35421
35422 exports.privateKeyTweakMul = function (privateKey, tweak) {
35423 var bn = new BN(tweak)
35424 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
35425
35426 bn.imul(new BN(privateKey))
35427 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
35428
35429 return bn.toArrayLike(Buffer, 'be', 32)
35430 }
35431
35432 exports.publicKeyCreate = function (privateKey, compressed) {
35433 var d = new BN(privateKey)
35434 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
35435
35436 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
35437 }
35438
35439 exports.publicKeyConvert = function (publicKey, compressed) {
35440 var pair = loadPublicKey(publicKey)
35441 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35442
35443 return new Buffer(pair.getPublic(compressed, true))
35444 }
35445
35446 exports.publicKeyVerify = function (publicKey) {
35447 return loadPublicKey(publicKey) !== null
35448 }
35449
35450 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
35451 var pair = loadPublicKey(publicKey)
35452 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35453
35454 tweak = new BN(tweak)
35455 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
35456
35457 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
35458 }
35459
35460 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
35461 var pair = loadPublicKey(publicKey)
35462 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35463
35464 tweak = new BN(tweak)
35465 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
35466
35467 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
35468 }
35469
35470 exports.publicKeyCombine = function (publicKeys, compressed) {
35471 var pairs = new Array(publicKeys.length)
35472 for (var i = 0; i < publicKeys.length; ++i) {
35473 pairs[i] = loadPublicKey(publicKeys[i])
35474 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35475 }
35476
35477 var point = pairs[0].pub
35478 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
35479 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
35480
35481 return new Buffer(point.encode(true, compressed))
35482 }
35483
35484 exports.signatureNormalize = function (signature) {
35485 var r = new BN(signature.slice(0, 32))
35486 var s = new BN(signature.slice(32, 64))
35487 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35488
35489 var result = new Buffer(signature)
35490 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
35491
35492 return result
35493 }
35494
35495 exports.signatureExport = function (signature) {
35496 var r = signature.slice(0, 32)
35497 var s = signature.slice(32, 64)
35498 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35499
35500 return { r: r, s: s }
35501 }
35502
35503 exports.signatureImport = function (sigObj) {
35504 var r = new BN(sigObj.r)
35505 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
35506
35507 var s = new BN(sigObj.s)
35508 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
35509
35510 return Buffer.concat([
35511 r.toArrayLike(Buffer, 'be', 32),
35512 s.toArrayLike(Buffer, 'be', 32)
35513 ])
35514 }
35515
35516 exports.sign = function (message, privateKey, noncefn, data) {
35517 if (typeof noncefn === 'function') {
35518 var getNonce = noncefn
35519 noncefn = function (counter) {
35520 var nonce = getNonce(message, privateKey, null, data, counter)
35521 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
35522
35523 return new BN(nonce)
35524 }
35525 }
35526
35527 var d = new BN(privateKey)
35528 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
35529
35530 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
35531 return {
35532 signature: Buffer.concat([
35533 result.r.toArrayLike(Buffer, 'be', 32),
35534 result.s.toArrayLike(Buffer, 'be', 32)
35535 ]),
35536 recovery: result.recoveryParam
35537 }
35538 }
35539
35540 exports.verify = function (message, signature, publicKey) {
35541 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
35542
35543 var sigr = new BN(sigObj.r)
35544 var sigs = new BN(sigObj.s)
35545 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35546 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
35547
35548 var pair = loadPublicKey(publicKey)
35549 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35550
35551 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
35552 }
35553
35554 exports.recover = function (message, signature, recovery, compressed) {
35555 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
35556
35557 var sigr = new BN(sigObj.r)
35558 var sigs = new BN(sigObj.s)
35559 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35560
35561 try {
35562 if (sigr.isZero() || sigs.isZero()) throw new Error()
35563
35564 var point = ec.recoverPubKey(message, sigObj, recovery)
35565 return new Buffer(point.encode(true, compressed))
35566 } catch (err) {
35567 throw new Error(messages.ECDSA_RECOVER_FAIL)
35568 }
35569 }
35570
35571 exports.ecdh = function (publicKey, privateKey) {
35572 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
35573 return createHash('sha256').update(shared).digest()
35574 }
35575
35576 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
35577 var pair = loadPublicKey(publicKey)
35578 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35579
35580 var scalar = new BN(privateKey)
35581 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
35582
35583 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
35584 }
35585
35586 }).call(this,require("buffer").Buffer)
35587 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
35588 'use strict'
35589 var assert = require('./assert')
35590 var der = require('./der')
35591 var messages = require('./messages.json')
35592
35593 function initCompressedValue (value, defaultValue) {
35594 if (value === undefined) return defaultValue
35595
35596 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
35597 return value
35598 }
35599
35600 module.exports = function (secp256k1) {
35601 return {
35602 privateKeyVerify: function (privateKey) {
35603 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35604 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
35605 },
35606
35607 privateKeyExport: function (privateKey, compressed) {
35608 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35609 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35610
35611 compressed = initCompressedValue(compressed, true)
35612 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
35613
35614 return der.privateKeyExport(privateKey, publicKey, compressed)
35615 },
35616
35617 privateKeyImport: function (privateKey) {
35618 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35619
35620 privateKey = der.privateKeyImport(privateKey)
35621 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
35622
35623 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
35624 },
35625
35626 privateKeyTweakAdd: function (privateKey, tweak) {
35627 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35628 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35629
35630 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35631 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35632
35633 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
35634 },
35635
35636 privateKeyTweakMul: function (privateKey, tweak) {
35637 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35638 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35639
35640 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35641 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35642
35643 return secp256k1.privateKeyTweakMul(privateKey, tweak)
35644 },
35645
35646 publicKeyCreate: function (privateKey, compressed) {
35647 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35648 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35649
35650 compressed = initCompressedValue(compressed, true)
35651
35652 return secp256k1.publicKeyCreate(privateKey, compressed)
35653 },
35654
35655 publicKeyConvert: function (publicKey, compressed) {
35656 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35657 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35658
35659 compressed = initCompressedValue(compressed, true)
35660
35661 return secp256k1.publicKeyConvert(publicKey, compressed)
35662 },
35663
35664 publicKeyVerify: function (publicKey) {
35665 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35666 return secp256k1.publicKeyVerify(publicKey)
35667 },
35668
35669 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
35670 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35671 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35672
35673 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35674 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35675
35676 compressed = initCompressedValue(compressed, true)
35677
35678 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
35679 },
35680
35681 publicKeyTweakMul: function (publicKey, tweak, compressed) {
35682 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35683 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35684
35685 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35686 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35687
35688 compressed = initCompressedValue(compressed, true)
35689
35690 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
35691 },
35692
35693 publicKeyCombine: function (publicKeys, compressed) {
35694 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
35695 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
35696 for (var i = 0; i < publicKeys.length; ++i) {
35697 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
35698 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35699 }
35700
35701 compressed = initCompressedValue(compressed, true)
35702
35703 return secp256k1.publicKeyCombine(publicKeys, compressed)
35704 },
35705
35706 signatureNormalize: function (signature) {
35707 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35708 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35709
35710 return secp256k1.signatureNormalize(signature)
35711 },
35712
35713 signatureExport: function (signature) {
35714 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35715 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35716
35717 var sigObj = secp256k1.signatureExport(signature)
35718 return der.signatureExport(sigObj)
35719 },
35720
35721 signatureImport: function (sig) {
35722 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35723 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35724
35725 var sigObj = der.signatureImport(sig)
35726 if (sigObj) return secp256k1.signatureImport(sigObj)
35727
35728 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
35729 },
35730
35731 signatureImportLax: function (sig) {
35732 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35733 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35734
35735 var sigObj = der.signatureImportLax(sig)
35736 if (sigObj) return secp256k1.signatureImport(sigObj)
35737
35738 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
35739 },
35740
35741 sign: function (message, privateKey, options) {
35742 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35743 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35744
35745 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35746 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35747
35748 var data = null
35749 var noncefn = null
35750 if (options !== undefined) {
35751 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
35752
35753 if (options.data !== undefined) {
35754 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
35755 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
35756 data = options.data
35757 }
35758
35759 if (options.noncefn !== undefined) {
35760 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
35761 noncefn = options.noncefn
35762 }
35763 }
35764
35765 return secp256k1.sign(message, privateKey, noncefn, data)
35766 },
35767
35768 verify: function (message, signature, publicKey) {
35769 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35770 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35771
35772 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35773 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35774
35775 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35776 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35777
35778 return secp256k1.verify(message, signature, publicKey)
35779 },
35780
35781 recover: function (message, signature, recovery, compressed) {
35782 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35783 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35784
35785 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35786 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35787
35788 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
35789 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
35790
35791 compressed = initCompressedValue(compressed, true)
35792
35793 return secp256k1.recover(message, signature, recovery, compressed)
35794 },
35795
35796 ecdh: function (publicKey, privateKey) {
35797 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35798 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35799
35800 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35801 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35802
35803 return secp256k1.ecdh(publicKey, privateKey)
35804 },
35805
35806 ecdhUnsafe: function (publicKey, privateKey, compressed) {
35807 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35808 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35809
35810 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35811 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35812
35813 compressed = initCompressedValue(compressed, true)
35814
35815 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
35816 }
35817 }
35818 }
35819
35820 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
35821 module.exports={
35822 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
35823 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
35824 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
35825 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
35826 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
35827 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
35828 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
35829 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
35830 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
35831 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
35832 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
35833 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
35834 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
35835 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
35836 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
35837 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
35838 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
35839 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
35840 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
35841 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
35842 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
35843 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
35844 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
35845 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
35846 "MSG32_TYPE_INVALID": "message should be a Buffer",
35847 "MSG32_LENGTH_INVALID": "message length is invalid",
35848 "OPTIONS_TYPE_INVALID": "options should be an Object",
35849 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
35850 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
35851 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
35852 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
35853 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
35854 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
35855 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
35856 }
35857
35858 },{}],79:[function(require,module,exports){
35859 (function (Buffer){
35860 // prototype class for hash functions
35861 function Hash (blockSize, finalSize) {
35862 this._block = new Buffer(blockSize)
35863 this._finalSize = finalSize
35864 this._blockSize = blockSize
35865 this._len = 0
35866 this._s = 0
35867 }
35868
35869 Hash.prototype.update = function (data, enc) {
35870 if (typeof data === 'string') {
35871 enc = enc || 'utf8'
35872 data = new Buffer(data, enc)
35873 }
35874
35875 var l = this._len += data.length
35876 var s = this._s || 0
35877 var f = 0
35878 var buffer = this._block
35879
35880 while (s < l) {
35881 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
35882 var ch = (t - f)
35883
35884 for (var i = 0; i < ch; i++) {
35885 buffer[(s % this._blockSize) + i] = data[i + f]
35886 }
35887
35888 s += ch
35889 f += ch
35890
35891 if ((s % this._blockSize) === 0) {
35892 this._update(buffer)
35893 }
35894 }
35895 this._s = s
35896
35897 return this
35898 }
35899
35900 Hash.prototype.digest = function (enc) {
35901 // Suppose the length of the message M, in bits, is l
35902 var l = this._len * 8
35903
35904 // Append the bit 1 to the end of the message
35905 this._block[this._len % this._blockSize] = 0x80
35906
35907 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
35908 this._block.fill(0, this._len % this._blockSize + 1)
35909
35910 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
35911 this._update(this._block)
35912 this._block.fill(0)
35913 }
35914
35915 // to this append the block which is equal to the number l written in binary
35916 // TODO: handle case where l is > Math.pow(2, 29)
35917 this._block.writeInt32BE(l, this._blockSize - 4)
35918
35919 var hash = this._update(this._block) || this._hash()
35920
35921 return enc ? hash.toString(enc) : hash
35922 }
35923
35924 Hash.prototype._update = function () {
35925 throw new Error('_update must be implemented by subclass')
35926 }
35927
35928 module.exports = Hash
35929
35930 }).call(this,require("buffer").Buffer)
35931 },{"buffer":5}],80:[function(require,module,exports){
35932 var exports = module.exports = function SHA (algorithm) {
35933 algorithm = algorithm.toLowerCase()
35934
35935 var Algorithm = exports[algorithm]
35936 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
35937
35938 return new Algorithm()
35939 }
35940
35941 exports.sha = require('./sha')
35942 exports.sha1 = require('./sha1')
35943 exports.sha224 = require('./sha224')
35944 exports.sha256 = require('./sha256')
35945 exports.sha384 = require('./sha384')
35946 exports.sha512 = require('./sha512')
35947
35948 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
35949 (function (Buffer){
35950 /*
35951 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
35952 * in FIPS PUB 180-1
35953 * This source code is derived from sha1.js of the same repository.
35954 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
35955 * operation was added.
35956 */
35957
35958 var inherits = require('inherits')
35959 var Hash = require('./hash')
35960
35961 var K = [
35962 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
35963 ]
35964
35965 var W = new Array(80)
35966
35967 function Sha () {
35968 this.init()
35969 this._w = W
35970
35971 Hash.call(this, 64, 56)
35972 }
35973
35974 inherits(Sha, Hash)
35975
35976 Sha.prototype.init = function () {
35977 this._a = 0x67452301
35978 this._b = 0xefcdab89
35979 this._c = 0x98badcfe
35980 this._d = 0x10325476
35981 this._e = 0xc3d2e1f0
35982
35983 return this
35984 }
35985
35986 function rotl5 (num) {
35987 return (num << 5) | (num >>> 27)
35988 }
35989
35990 function rotl30 (num) {
35991 return (num << 30) | (num >>> 2)
35992 }
35993
35994 function ft (s, b, c, d) {
35995 if (s === 0) return (b & c) | ((~b) & d)
35996 if (s === 2) return (b & c) | (b & d) | (c & d)
35997 return b ^ c ^ d
35998 }
35999
36000 Sha.prototype._update = function (M) {
36001 var W = this._w
36002
36003 var a = this._a | 0
36004 var b = this._b | 0
36005 var c = this._c | 0
36006 var d = this._d | 0
36007 var e = this._e | 0
36008
36009 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
36010 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
36011
36012 for (var j = 0; j < 80; ++j) {
36013 var s = ~~(j / 20)
36014 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
36015
36016 e = d
36017 d = c
36018 c = rotl30(b)
36019 b = a
36020 a = t
36021 }
36022
36023 this._a = (a + this._a) | 0
36024 this._b = (b + this._b) | 0
36025 this._c = (c + this._c) | 0
36026 this._d = (d + this._d) | 0
36027 this._e = (e + this._e) | 0
36028 }
36029
36030 Sha.prototype._hash = function () {
36031 var H = new Buffer(20)
36032
36033 H.writeInt32BE(this._a | 0, 0)
36034 H.writeInt32BE(this._b | 0, 4)
36035 H.writeInt32BE(this._c | 0, 8)
36036 H.writeInt32BE(this._d | 0, 12)
36037 H.writeInt32BE(this._e | 0, 16)
36038
36039 return H
36040 }
36041
36042 module.exports = Sha
36043
36044 }).call(this,require("buffer").Buffer)
36045 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
36046 (function (Buffer){
36047 /*
36048 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
36049 * in FIPS PUB 180-1
36050 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
36051 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36052 * Distributed under the BSD License
36053 * See http://pajhome.org.uk/crypt/md5 for details.
36054 */
36055
36056 var inherits = require('inherits')
36057 var Hash = require('./hash')
36058
36059 var K = [
36060 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
36061 ]
36062
36063 var W = new Array(80)
36064
36065 function Sha1 () {
36066 this.init()
36067 this._w = W
36068
36069 Hash.call(this, 64, 56)
36070 }
36071
36072 inherits(Sha1, Hash)
36073
36074 Sha1.prototype.init = function () {
36075 this._a = 0x67452301
36076 this._b = 0xefcdab89
36077 this._c = 0x98badcfe
36078 this._d = 0x10325476
36079 this._e = 0xc3d2e1f0
36080
36081 return this
36082 }
36083
36084 function rotl1 (num) {
36085 return (num << 1) | (num >>> 31)
36086 }
36087
36088 function rotl5 (num) {
36089 return (num << 5) | (num >>> 27)
36090 }
36091
36092 function rotl30 (num) {
36093 return (num << 30) | (num >>> 2)
36094 }
36095
36096 function ft (s, b, c, d) {
36097 if (s === 0) return (b & c) | ((~b) & d)
36098 if (s === 2) return (b & c) | (b & d) | (c & d)
36099 return b ^ c ^ d
36100 }
36101
36102 Sha1.prototype._update = function (M) {
36103 var W = this._w
36104
36105 var a = this._a | 0
36106 var b = this._b | 0
36107 var c = this._c | 0
36108 var d = this._d | 0
36109 var e = this._e | 0
36110
36111 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
36112 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
36113
36114 for (var j = 0; j < 80; ++j) {
36115 var s = ~~(j / 20)
36116 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
36117
36118 e = d
36119 d = c
36120 c = rotl30(b)
36121 b = a
36122 a = t
36123 }
36124
36125 this._a = (a + this._a) | 0
36126 this._b = (b + this._b) | 0
36127 this._c = (c + this._c) | 0
36128 this._d = (d + this._d) | 0
36129 this._e = (e + this._e) | 0
36130 }
36131
36132 Sha1.prototype._hash = function () {
36133 var H = new Buffer(20)
36134
36135 H.writeInt32BE(this._a | 0, 0)
36136 H.writeInt32BE(this._b | 0, 4)
36137 H.writeInt32BE(this._c | 0, 8)
36138 H.writeInt32BE(this._d | 0, 12)
36139 H.writeInt32BE(this._e | 0, 16)
36140
36141 return H
36142 }
36143
36144 module.exports = Sha1
36145
36146 }).call(this,require("buffer").Buffer)
36147 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
36148 (function (Buffer){
36149 /**
36150 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
36151 * in FIPS 180-2
36152 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
36153 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36154 *
36155 */
36156
36157 var inherits = require('inherits')
36158 var Sha256 = require('./sha256')
36159 var Hash = require('./hash')
36160
36161 var W = new Array(64)
36162
36163 function Sha224 () {
36164 this.init()
36165
36166 this._w = W // new Array(64)
36167
36168 Hash.call(this, 64, 56)
36169 }
36170
36171 inherits(Sha224, Sha256)
36172
36173 Sha224.prototype.init = function () {
36174 this._a = 0xc1059ed8
36175 this._b = 0x367cd507
36176 this._c = 0x3070dd17
36177 this._d = 0xf70e5939
36178 this._e = 0xffc00b31
36179 this._f = 0x68581511
36180 this._g = 0x64f98fa7
36181 this._h = 0xbefa4fa4
36182
36183 return this
36184 }
36185
36186 Sha224.prototype._hash = function () {
36187 var H = new Buffer(28)
36188
36189 H.writeInt32BE(this._a, 0)
36190 H.writeInt32BE(this._b, 4)
36191 H.writeInt32BE(this._c, 8)
36192 H.writeInt32BE(this._d, 12)
36193 H.writeInt32BE(this._e, 16)
36194 H.writeInt32BE(this._f, 20)
36195 H.writeInt32BE(this._g, 24)
36196
36197 return H
36198 }
36199
36200 module.exports = Sha224
36201
36202 }).call(this,require("buffer").Buffer)
36203 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
36204 (function (Buffer){
36205 /**
36206 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
36207 * in FIPS 180-2
36208 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
36209 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36210 *
36211 */
36212
36213 var inherits = require('inherits')
36214 var Hash = require('./hash')
36215
36216 var K = [
36217 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
36218 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
36219 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
36220 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
36221 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
36222 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
36223 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
36224 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
36225 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
36226 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
36227 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
36228 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
36229 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
36230 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
36231 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
36232 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
36233 ]
36234
36235 var W = new Array(64)
36236
36237 function Sha256 () {
36238 this.init()
36239
36240 this._w = W // new Array(64)
36241
36242 Hash.call(this, 64, 56)
36243 }
36244
36245 inherits(Sha256, Hash)
36246
36247 Sha256.prototype.init = function () {
36248 this._a = 0x6a09e667
36249 this._b = 0xbb67ae85
36250 this._c = 0x3c6ef372
36251 this._d = 0xa54ff53a
36252 this._e = 0x510e527f
36253 this._f = 0x9b05688c
36254 this._g = 0x1f83d9ab
36255 this._h = 0x5be0cd19
36256
36257 return this
36258 }
36259
36260 function ch (x, y, z) {
36261 return z ^ (x & (y ^ z))
36262 }
36263
36264 function maj (x, y, z) {
36265 return (x & y) | (z & (x | y))
36266 }
36267
36268 function sigma0 (x) {
36269 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
36270 }
36271
36272 function sigma1 (x) {
36273 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
36274 }
36275
36276 function gamma0 (x) {
36277 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
36278 }
36279
36280 function gamma1 (x) {
36281 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
36282 }
36283
36284 Sha256.prototype._update = function (M) {
36285 var W = this._w
36286
36287 var a = this._a | 0
36288 var b = this._b | 0
36289 var c = this._c | 0
36290 var d = this._d | 0
36291 var e = this._e | 0
36292 var f = this._f | 0
36293 var g = this._g | 0
36294 var h = this._h | 0
36295
36296 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
36297 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
36298
36299 for (var j = 0; j < 64; ++j) {
36300 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
36301 var T2 = (sigma0(a) + maj(a, b, c)) | 0
36302
36303 h = g
36304 g = f
36305 f = e
36306 e = (d + T1) | 0
36307 d = c
36308 c = b
36309 b = a
36310 a = (T1 + T2) | 0
36311 }
36312
36313 this._a = (a + this._a) | 0
36314 this._b = (b + this._b) | 0
36315 this._c = (c + this._c) | 0
36316 this._d = (d + this._d) | 0
36317 this._e = (e + this._e) | 0
36318 this._f = (f + this._f) | 0
36319 this._g = (g + this._g) | 0
36320 this._h = (h + this._h) | 0
36321 }
36322
36323 Sha256.prototype._hash = function () {
36324 var H = new Buffer(32)
36325
36326 H.writeInt32BE(this._a, 0)
36327 H.writeInt32BE(this._b, 4)
36328 H.writeInt32BE(this._c, 8)
36329 H.writeInt32BE(this._d, 12)
36330 H.writeInt32BE(this._e, 16)
36331 H.writeInt32BE(this._f, 20)
36332 H.writeInt32BE(this._g, 24)
36333 H.writeInt32BE(this._h, 28)
36334
36335 return H
36336 }
36337
36338 module.exports = Sha256
36339
36340 }).call(this,require("buffer").Buffer)
36341 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
36342 (function (Buffer){
36343 var inherits = require('inherits')
36344 var SHA512 = require('./sha512')
36345 var Hash = require('./hash')
36346
36347 var W = new Array(160)
36348
36349 function Sha384 () {
36350 this.init()
36351 this._w = W
36352
36353 Hash.call(this, 128, 112)
36354 }
36355
36356 inherits(Sha384, SHA512)
36357
36358 Sha384.prototype.init = function () {
36359 this._ah = 0xcbbb9d5d
36360 this._bh = 0x629a292a
36361 this._ch = 0x9159015a
36362 this._dh = 0x152fecd8
36363 this._eh = 0x67332667
36364 this._fh = 0x8eb44a87
36365 this._gh = 0xdb0c2e0d
36366 this._hh = 0x47b5481d
36367
36368 this._al = 0xc1059ed8
36369 this._bl = 0x367cd507
36370 this._cl = 0x3070dd17
36371 this._dl = 0xf70e5939
36372 this._el = 0xffc00b31
36373 this._fl = 0x68581511
36374 this._gl = 0x64f98fa7
36375 this._hl = 0xbefa4fa4
36376
36377 return this
36378 }
36379
36380 Sha384.prototype._hash = function () {
36381 var H = new Buffer(48)
36382
36383 function writeInt64BE (h, l, offset) {
36384 H.writeInt32BE(h, offset)
36385 H.writeInt32BE(l, offset + 4)
36386 }
36387
36388 writeInt64BE(this._ah, this._al, 0)
36389 writeInt64BE(this._bh, this._bl, 8)
36390 writeInt64BE(this._ch, this._cl, 16)
36391 writeInt64BE(this._dh, this._dl, 24)
36392 writeInt64BE(this._eh, this._el, 32)
36393 writeInt64BE(this._fh, this._fl, 40)
36394
36395 return H
36396 }
36397
36398 module.exports = Sha384
36399
36400 }).call(this,require("buffer").Buffer)
36401 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
36402 (function (Buffer){
36403 var inherits = require('inherits')
36404 var Hash = require('./hash')
36405
36406 var K = [
36407 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
36408 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
36409 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
36410 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
36411 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
36412 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
36413 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
36414 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
36415 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
36416 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
36417 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
36418 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
36419 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
36420 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
36421 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
36422 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
36423 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
36424 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
36425 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
36426 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
36427 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
36428 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
36429 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
36430 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
36431 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
36432 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
36433 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
36434 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
36435 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
36436 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
36437 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
36438 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
36439 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
36440 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
36441 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
36442 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
36443 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
36444 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
36445 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
36446 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
36447 ]
36448
36449 var W = new Array(160)
36450
36451 function Sha512 () {
36452 this.init()
36453 this._w = W
36454
36455 Hash.call(this, 128, 112)
36456 }
36457
36458 inherits(Sha512, Hash)
36459
36460 Sha512.prototype.init = function () {
36461 this._ah = 0x6a09e667
36462 this._bh = 0xbb67ae85
36463 this._ch = 0x3c6ef372
36464 this._dh = 0xa54ff53a
36465 this._eh = 0x510e527f
36466 this._fh = 0x9b05688c
36467 this._gh = 0x1f83d9ab
36468 this._hh = 0x5be0cd19
36469
36470 this._al = 0xf3bcc908
36471 this._bl = 0x84caa73b
36472 this._cl = 0xfe94f82b
36473 this._dl = 0x5f1d36f1
36474 this._el = 0xade682d1
36475 this._fl = 0x2b3e6c1f
36476 this._gl = 0xfb41bd6b
36477 this._hl = 0x137e2179
36478
36479 return this
36480 }
36481
36482 function Ch (x, y, z) {
36483 return z ^ (x & (y ^ z))
36484 }
36485
36486 function maj (x, y, z) {
36487 return (x & y) | (z & (x | y))
36488 }
36489
36490 function sigma0 (x, xl) {
36491 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
36492 }
36493
36494 function sigma1 (x, xl) {
36495 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
36496 }
36497
36498 function Gamma0 (x, xl) {
36499 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
36500 }
36501
36502 function Gamma0l (x, xl) {
36503 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
36504 }
36505
36506 function Gamma1 (x, xl) {
36507 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
36508 }
36509
36510 function Gamma1l (x, xl) {
36511 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
36512 }
36513
36514 function getCarry (a, b) {
36515 return (a >>> 0) < (b >>> 0) ? 1 : 0
36516 }
36517
36518 Sha512.prototype._update = function (M) {
36519 var W = this._w
36520
36521 var ah = this._ah | 0
36522 var bh = this._bh | 0
36523 var ch = this._ch | 0
36524 var dh = this._dh | 0
36525 var eh = this._eh | 0
36526 var fh = this._fh | 0
36527 var gh = this._gh | 0
36528 var hh = this._hh | 0
36529
36530 var al = this._al | 0
36531 var bl = this._bl | 0
36532 var cl = this._cl | 0
36533 var dl = this._dl | 0
36534 var el = this._el | 0
36535 var fl = this._fl | 0
36536 var gl = this._gl | 0
36537 var hl = this._hl | 0
36538
36539 for (var i = 0; i < 32; i += 2) {
36540 W[i] = M.readInt32BE(i * 4)
36541 W[i + 1] = M.readInt32BE(i * 4 + 4)
36542 }
36543 for (; i < 160; i += 2) {
36544 var xh = W[i - 15 * 2]
36545 var xl = W[i - 15 * 2 + 1]
36546 var gamma0 = Gamma0(xh, xl)
36547 var gamma0l = Gamma0l(xl, xh)
36548
36549 xh = W[i - 2 * 2]
36550 xl = W[i - 2 * 2 + 1]
36551 var gamma1 = Gamma1(xh, xl)
36552 var gamma1l = Gamma1l(xl, xh)
36553
36554 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
36555 var Wi7h = W[i - 7 * 2]
36556 var Wi7l = W[i - 7 * 2 + 1]
36557
36558 var Wi16h = W[i - 16 * 2]
36559 var Wi16l = W[i - 16 * 2 + 1]
36560
36561 var Wil = (gamma0l + Wi7l) | 0
36562 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
36563 Wil = (Wil + gamma1l) | 0
36564 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
36565 Wil = (Wil + Wi16l) | 0
36566 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
36567
36568 W[i] = Wih
36569 W[i + 1] = Wil
36570 }
36571
36572 for (var j = 0; j < 160; j += 2) {
36573 Wih = W[j]
36574 Wil = W[j + 1]
36575
36576 var majh = maj(ah, bh, ch)
36577 var majl = maj(al, bl, cl)
36578
36579 var sigma0h = sigma0(ah, al)
36580 var sigma0l = sigma0(al, ah)
36581 var sigma1h = sigma1(eh, el)
36582 var sigma1l = sigma1(el, eh)
36583
36584 // t1 = h + sigma1 + ch + K[j] + W[j]
36585 var Kih = K[j]
36586 var Kil = K[j + 1]
36587
36588 var chh = Ch(eh, fh, gh)
36589 var chl = Ch(el, fl, gl)
36590
36591 var t1l = (hl + sigma1l) | 0
36592 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
36593 t1l = (t1l + chl) | 0
36594 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
36595 t1l = (t1l + Kil) | 0
36596 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
36597 t1l = (t1l + Wil) | 0
36598 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
36599
36600 // t2 = sigma0 + maj
36601 var t2l = (sigma0l + majl) | 0
36602 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
36603
36604 hh = gh
36605 hl = gl
36606 gh = fh
36607 gl = fl
36608 fh = eh
36609 fl = el
36610 el = (dl + t1l) | 0
36611 eh = (dh + t1h + getCarry(el, dl)) | 0
36612 dh = ch
36613 dl = cl
36614 ch = bh
36615 cl = bl
36616 bh = ah
36617 bl = al
36618 al = (t1l + t2l) | 0
36619 ah = (t1h + t2h + getCarry(al, t1l)) | 0
36620 }
36621
36622 this._al = (this._al + al) | 0
36623 this._bl = (this._bl + bl) | 0
36624 this._cl = (this._cl + cl) | 0
36625 this._dl = (this._dl + dl) | 0
36626 this._el = (this._el + el) | 0
36627 this._fl = (this._fl + fl) | 0
36628 this._gl = (this._gl + gl) | 0
36629 this._hl = (this._hl + hl) | 0
36630
36631 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
36632 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
36633 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
36634 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
36635 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
36636 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
36637 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
36638 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
36639 }
36640
36641 Sha512.prototype._hash = function () {
36642 var H = new Buffer(64)
36643
36644 function writeInt64BE (h, l, offset) {
36645 H.writeInt32BE(h, offset)
36646 H.writeInt32BE(l, offset + 4)
36647 }
36648
36649 writeInt64BE(this._ah, this._al, 0)
36650 writeInt64BE(this._bh, this._bl, 8)
36651 writeInt64BE(this._ch, this._cl, 16)
36652 writeInt64BE(this._dh, this._dl, 24)
36653 writeInt64BE(this._eh, this._el, 32)
36654 writeInt64BE(this._fh, this._fl, 40)
36655 writeInt64BE(this._gh, this._gl, 48)
36656 writeInt64BE(this._hh, this._hl, 56)
36657
36658 return H
36659 }
36660
36661 module.exports = Sha512
36662
36663 }).call(this,require("buffer").Buffer)
36664 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
36665 var isHexPrefixed = require('is-hex-prefixed');
36666
36667 /**
36668 * Removes '0x' from a given `String` is present
36669 * @param {String} str the string value
36670 * @return {String|Optional} a string by pass if necessary
36671 */
36672 module.exports = function stripHexPrefix(str) {
36673 if (typeof str !== 'string') {
36674 return str;
36675 }
36676
36677 return isHexPrefixed(str) ? str.slice(2) : str;
36678 }
36679
36680 },{"is-hex-prefixed":64}]},{},[31])(31)
36681 });</script>
36682 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
36683
36684 //// base.js
36685
36686 /** @fileOverview Javascript cryptography implementation.
36687 *
36688 * Crush to remove comments, shorten variable names and
36689 * generally reduce transmission size.
36690 *
36691 * @author Emily Stark
36692 * @author Mike Hamburg
36693 * @author Dan Boneh
36694 */
36695
36696 "use strict";
36697 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
36698 /*global document, window, escape, unescape, module, require, Uint32Array */
36699
36700 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
36701 var sjcl = {
36702 /** @namespace Symmetric ciphers. */
36703 cipher: {},
36704
36705 /** @namespace Hash functions. Right now only SHA256 is implemented. */
36706 hash: {},
36707
36708 /** @namespace Key exchange functions. Right now only SRP is implemented. */
36709 keyexchange: {},
36710
36711 /** @namespace Block cipher modes of operation. */
36712 mode: {},
36713
36714 /** @namespace Miscellaneous. HMAC and PBKDF2. */
36715 misc: {},
36716
36717 /**
36718 * @namespace Bit array encoders and decoders.
36719 *
36720 * @description
36721 * The members of this namespace are functions which translate between
36722 * SJCL's bitArrays and other objects (usually strings). Because it
36723 * isn't always clear which direction is encoding and which is decoding,
36724 * the method names are "fromBits" and "toBits".
36725 */
36726 codec: {},
36727
36728 /** @namespace Exceptions. */
36729 exception: {
36730 /** @constructor Ciphertext is corrupt. */
36731 corrupt: function(message) {
36732 this.toString = function() { return "CORRUPT: "+this.message; };
36733 this.message = message;
36734 },
36735
36736 /** @constructor Invalid parameter. */
36737 invalid: function(message) {
36738 this.toString = function() { return "INVALID: "+this.message; };
36739 this.message = message;
36740 },
36741
36742 /** @constructor Bug or missing feature in SJCL. @constructor */
36743 bug: function(message) {
36744 this.toString = function() { return "BUG: "+this.message; };
36745 this.message = message;
36746 },
36747
36748 /** @constructor Something isn't ready. */
36749 notReady: function(message) {
36750 this.toString = function() { return "NOT READY: "+this.message; };
36751 this.message = message;
36752 }
36753 }
36754 };
36755
36756 if(typeof module !== 'undefined' && module.exports){
36757 module.exports = sjcl;
36758 }
36759 if (typeof define === "function") {
36760 define([], function () {
36761 return sjcl;
36762 });
36763 }
36764
36765
36766 //// bitArray.js
36767
36768 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
36769 *
36770 * @author Emily Stark
36771 * @author Mike Hamburg
36772 * @author Dan Boneh
36773 */
36774
36775 /** @namespace Arrays of bits, encoded as arrays of Numbers.
36776 *
36777 * @description
36778 * <p>
36779 * These objects are the currency accepted by SJCL's crypto functions.
36780 * </p>
36781 *
36782 * <p>
36783 * Most of our crypto primitives operate on arrays of 4-byte words internally,
36784 * but many of them can take arguments that are not a multiple of 4 bytes.
36785 * This library encodes arrays of bits (whose size need not be a multiple of 8
36786 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
36787 * array of words, 32 bits at a time. Since the words are double-precision
36788 * floating point numbers, they fit some extra data. We use this (in a private,
36789 * possibly-changing manner) to encode the number of bits actually present
36790 * in the last word of the array.
36791 * </p>
36792 *
36793 * <p>
36794 * Because bitwise ops clear this out-of-band data, these arrays can be passed
36795 * to ciphers like AES which want arrays of words.
36796 * </p>
36797 */
36798 sjcl.bitArray = {
36799 /**
36800 * Array slices in units of bits.
36801 * @param {bitArray} a The array to slice.
36802 * @param {Number} bstart The offset to the start of the slice, in bits.
36803 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
36804 * slice until the end of the array.
36805 * @return {bitArray} The requested slice.
36806 */
36807 bitSlice: function (a, bstart, bend) {
36808 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
36809 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
36810 },
36811
36812 /**
36813 * Extract a number packed into a bit array.
36814 * @param {bitArray} a The array to slice.
36815 * @param {Number} bstart The offset to the start of the slice, in bits.
36816 * @param {Number} length The length of the number to extract.
36817 * @return {Number} The requested slice.
36818 */
36819 extract: function(a, bstart, blength) {
36820 // FIXME: this Math.floor is not necessary at all, but for some reason
36821 // seems to suppress a bug in the Chromium JIT.
36822 var x, sh = Math.floor((-bstart-blength) & 31);
36823 if ((bstart + blength - 1 ^ bstart) & -32) {
36824 // it crosses a boundary
36825 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
36826 } else {
36827 // within a single word
36828 x = a[bstart/32|0] >>> sh;
36829 }
36830 return x & ((1<<blength) - 1);
36831 },
36832
36833 /**
36834 * Concatenate two bit arrays.
36835 * @param {bitArray} a1 The first array.
36836 * @param {bitArray} a2 The second array.
36837 * @return {bitArray} The concatenation of a1 and a2.
36838 */
36839 concat: function (a1, a2) {
36840 if (a1.length === 0 || a2.length === 0) {
36841 return a1.concat(a2);
36842 }
36843
36844 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
36845 if (shift === 32) {
36846 return a1.concat(a2);
36847 } else {
36848 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
36849 }
36850 },
36851
36852 /**
36853 * Find the length of an array of bits.
36854 * @param {bitArray} a The array.
36855 * @return {Number} The length of a, in bits.
36856 */
36857 bitLength: function (a) {
36858 var l = a.length, x;
36859 if (l === 0) { return 0; }
36860 x = a[l - 1];
36861 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
36862 },
36863
36864 /**
36865 * Truncate an array.
36866 * @param {bitArray} a The array.
36867 * @param {Number} len The length to truncate to, in bits.
36868 * @return {bitArray} A new array, truncated to len bits.
36869 */
36870 clamp: function (a, len) {
36871 if (a.length * 32 < len) { return a; }
36872 a = a.slice(0, Math.ceil(len / 32));
36873 var l = a.length;
36874 len = len & 31;
36875 if (l > 0 && len) {
36876 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
36877 }
36878 return a;
36879 },
36880
36881 /**
36882 * Make a partial word for a bit array.
36883 * @param {Number} len The number of bits in the word.
36884 * @param {Number} x The bits.
36885 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
36886 * @return {Number} The partial word.
36887 */
36888 partial: function (len, x, _end) {
36889 if (len === 32) { return x; }
36890 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
36891 },
36892
36893 /**
36894 * Get the number of bits used by a partial word.
36895 * @param {Number} x The partial word.
36896 * @return {Number} The number of bits used by the partial word.
36897 */
36898 getPartial: function (x) {
36899 return Math.round(x/0x10000000000) || 32;
36900 },
36901
36902 /**
36903 * Compare two arrays for equality in a predictable amount of time.
36904 * @param {bitArray} a The first array.
36905 * @param {bitArray} b The second array.
36906 * @return {boolean} true if a == b; false otherwise.
36907 */
36908 equal: function (a, b) {
36909 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
36910 return false;
36911 }
36912 var x = 0, i;
36913 for (i=0; i<a.length; i++) {
36914 x |= a[i]^b[i];
36915 }
36916 return (x === 0);
36917 },
36918
36919 /** Shift an array right.
36920 * @param {bitArray} a The array to shift.
36921 * @param {Number} shift The number of bits to shift.
36922 * @param {Number} [carry=0] A byte to carry in
36923 * @param {bitArray} [out=[]] An array to prepend to the output.
36924 * @private
36925 */
36926 _shiftRight: function (a, shift, carry, out) {
36927 var i, last2=0, shift2;
36928 if (out === undefined) { out = []; }
36929
36930 for (; shift >= 32; shift -= 32) {
36931 out.push(carry);
36932 carry = 0;
36933 }
36934 if (shift === 0) {
36935 return out.concat(a);
36936 }
36937
36938 for (i=0; i<a.length; i++) {
36939 out.push(carry | a[i]>>>shift);
36940 carry = a[i] << (32-shift);
36941 }
36942 last2 = a.length ? a[a.length-1] : 0;
36943 shift2 = sjcl.bitArray.getPartial(last2);
36944 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
36945 return out;
36946 },
36947
36948 /** xor a block of 4 words together.
36949 * @private
36950 */
36951 _xor4: function(x,y) {
36952 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
36953 },
36954
36955 /** byteswap a word array inplace.
36956 * (does not handle partial words)
36957 * @param {sjcl.bitArray} a word array
36958 * @return {sjcl.bitArray} byteswapped array
36959 */
36960 byteswapM: function(a) {
36961 var i, v, m = 0xff00;
36962 for (i = 0; i < a.length; ++i) {
36963 v = a[i];
36964 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
36965 }
36966 return a;
36967 }
36968 };
36969
36970
36971 //// codecString.js
36972
36973 /** @fileOverview Bit array codec implementations.
36974 *
36975 * @author Emily Stark
36976 * @author Mike Hamburg
36977 * @author Dan Boneh
36978 */
36979
36980 /** @namespace UTF-8 strings */
36981 sjcl.codec.utf8String = {
36982 /** Convert from a bitArray to a UTF-8 string. */
36983 fromBits: function (arr) {
36984 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
36985 for (i=0; i<bl/8; i++) {
36986 if ((i&3) === 0) {
36987 tmp = arr[i/4];
36988 }
36989 out += String.fromCharCode(tmp >>> 24);
36990 tmp <<= 8;
36991 }
36992 return decodeURIComponent(escape(out));
36993 },
36994
36995 /** Convert from a UTF-8 string to a bitArray. */
36996 toBits: function (str) {
36997 str = unescape(encodeURIComponent(str));
36998 var out = [], i, tmp=0;
36999 for (i=0; i<str.length; i++) {
37000 tmp = tmp << 8 | str.charCodeAt(i);
37001 if ((i&3) === 3) {
37002 out.push(tmp);
37003 tmp = 0;
37004 }
37005 }
37006 if (i&3) {
37007 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
37008 }
37009 return out;
37010 }
37011 };
37012
37013
37014 //// codecHex.js
37015
37016 /** @fileOverview Bit array codec implementations.
37017 *
37018 * @author Emily Stark
37019 * @author Mike Hamburg
37020 * @author Dan Boneh
37021 */
37022
37023 /** @namespace Hexadecimal */
37024 sjcl.codec.hex = {
37025 /** Convert from a bitArray to a hex string. */
37026 fromBits: function (arr) {
37027 var out = "", i;
37028 for (i=0; i<arr.length; i++) {
37029 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
37030 }
37031 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
37032 },
37033 /** Convert from a hex string to a bitArray. */
37034 toBits: function (str) {
37035 var i, out=[], len;
37036 str = str.replace(/\s|0x/g, "");
37037 len = str.length;
37038 str = str + "00000000";
37039 for (i=0; i<str.length; i+=8) {
37040 out.push(parseInt(str.substr(i,8),16)^0);
37041 }
37042 return sjcl.bitArray.clamp(out, len*4);
37043 }
37044 };
37045
37046
37047 //// sha512.js
37048
37049 /** @fileOverview Javascript SHA-512 implementation.
37050 *
37051 * This implementation was written for CryptoJS by Jeff Mott and adapted for
37052 * SJCL by Stefan Thomas.
37053 *
37054 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
37055 * Released with New BSD License
37056 *
37057 * @author Emily Stark
37058 * @author Mike Hamburg
37059 * @author Dan Boneh
37060 * @author Jeff Mott
37061 * @author Stefan Thomas
37062 */
37063
37064 /**
37065 * Context for a SHA-512 operation in progress.
37066 * @constructor
37067 * @class Secure Hash Algorithm, 512 bits.
37068 */
37069 sjcl.hash.sha512 = function (hash) {
37070 if (!this._key[0]) { this._precompute(); }
37071 if (hash) {
37072 this._h = hash._h.slice(0);
37073 this._buffer = hash._buffer.slice(0);
37074 this._length = hash._length;
37075 } else {
37076 this.reset();
37077 }
37078 };
37079
37080 /**
37081 * Hash a string or an array of words.
37082 * @static
37083 * @param {bitArray|String} data the data to hash.
37084 * @return {bitArray} The hash value, an array of 16 big-endian words.
37085 */
37086 sjcl.hash.sha512.hash = function (data) {
37087 return (new sjcl.hash.sha512()).update(data).finalize();
37088 };
37089
37090 sjcl.hash.sha512.prototype = {
37091 /**
37092 * The hash's block size, in bits.
37093 * @constant
37094 */
37095 blockSize: 1024,
37096
37097 /**
37098 * Reset the hash state.
37099 * @return this
37100 */
37101 reset:function () {
37102 this._h = this._init.slice(0);
37103 this._buffer = [];
37104 this._length = 0;
37105 return this;
37106 },
37107
37108 /**
37109 * Input several words to the hash.
37110 * @param {bitArray|String} data the data to hash.
37111 * @return this
37112 */
37113 update: function (data) {
37114 if (typeof data === "string") {
37115 data = sjcl.codec.utf8String.toBits(data);
37116 }
37117 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
37118 ol = this._length,
37119 nl = this._length = ol + sjcl.bitArray.bitLength(data);
37120 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
37121 this._block(b.splice(0,32));
37122 }
37123 return this;
37124 },
37125
37126 /**
37127 * Complete hashing and output the hash value.
37128 * @return {bitArray} The hash value, an array of 16 big-endian words.
37129 */
37130 finalize:function () {
37131 var i, b = this._buffer, h = this._h;
37132
37133 // Round out and push the buffer
37134 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
37135
37136 // Round out the buffer to a multiple of 32 words, less the 4 length words.
37137 for (i = b.length + 4; i & 31; i++) {
37138 b.push(0);
37139 }
37140
37141 // append the length
37142 b.push(0);
37143 b.push(0);
37144 b.push(Math.floor(this._length / 0x100000000));
37145 b.push(this._length | 0);
37146
37147 while (b.length) {
37148 this._block(b.splice(0,32));
37149 }
37150
37151 this.reset();
37152 return h;
37153 },
37154
37155 /**
37156 * The SHA-512 initialization vector, to be precomputed.
37157 * @private
37158 */
37159 _init:[],
37160
37161 /**
37162 * Least significant 24 bits of SHA512 initialization values.
37163 *
37164 * Javascript only has 53 bits of precision, so we compute the 40 most
37165 * significant bits and add the remaining 24 bits as constants.
37166 *
37167 * @private
37168 */
37169 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
37170
37171 /*
37172 _init:
37173 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
37174 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
37175 */
37176
37177 /**
37178 * The SHA-512 hash key, to be precomputed.
37179 * @private
37180 */
37181 _key:[],
37182
37183 /**
37184 * Least significant 24 bits of SHA512 key values.
37185 * @private
37186 */
37187 _keyr:
37188 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
37189 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
37190 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
37191 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
37192 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
37193 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
37194 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
37195 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
37196 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
37197 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
37198
37199 /*
37200 _key:
37201 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37202 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37203 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37204 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37205 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37206 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37207 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37208 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37209 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37210 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37211 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37212 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37213 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37214 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37215 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37216 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37217 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37218 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37219 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37220 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
37221 */
37222
37223 /**
37224 * Function to precompute _init and _key.
37225 * @private
37226 */
37227 _precompute: function () {
37228 // XXX: This code is for precomputing the SHA256 constants, change for
37229 // SHA512 and re-enable.
37230 var i = 0, prime = 2, factor;
37231
37232 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
37233 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
37234
37235 outer: for (; i<80; prime++) {
37236 for (factor=2; factor*factor <= prime; factor++) {
37237 if (prime % factor === 0) {
37238 // not a prime
37239 continue outer;
37240 }
37241 }
37242
37243 if (i<8) {
37244 this._init[i*2] = frac(Math.pow(prime, 1/2));
37245 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
37246 }
37247 this._key[i*2] = frac(Math.pow(prime, 1/3));
37248 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
37249 i++;
37250 }
37251 },
37252
37253 /**
37254 * Perform one cycle of SHA-512.
37255 * @param {bitArray} words one block of words.
37256 * @private
37257 */
37258 _block:function (words) {
37259 var i, wrh, wrl,
37260 w = words.slice(0),
37261 h = this._h,
37262 k = this._key,
37263 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
37264 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
37265 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
37266 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
37267
37268 // Working variables
37269 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
37270 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
37271 eh = h4h, el = h4l, fh = h5h, fl = h5l,
37272 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
37273
37274 for (i=0; i<80; i++) {
37275 // load up the input word for this round
37276 if (i<16) {
37277 wrh = w[i * 2];
37278 wrl = w[i * 2 + 1];
37279 } else {
37280 // Gamma0
37281 var gamma0xh = w[(i-15) * 2];
37282 var gamma0xl = w[(i-15) * 2 + 1];
37283 var gamma0h =
37284 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
37285 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
37286 (gamma0xh >>> 7);
37287 var gamma0l =
37288 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
37289 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
37290 ((gamma0xh << 25) | (gamma0xl >>> 7));
37291
37292 // Gamma1
37293 var gamma1xh = w[(i-2) * 2];
37294 var gamma1xl = w[(i-2) * 2 + 1];
37295 var gamma1h =
37296 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
37297 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
37298 (gamma1xh >>> 6);
37299 var gamma1l =
37300 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
37301 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
37302 ((gamma1xh << 26) | (gamma1xl >>> 6));
37303
37304 // Shortcuts
37305 var wr7h = w[(i-7) * 2];
37306 var wr7l = w[(i-7) * 2 + 1];
37307
37308 var wr16h = w[(i-16) * 2];
37309 var wr16l = w[(i-16) * 2 + 1];
37310
37311 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
37312 wrl = gamma0l + wr7l;
37313 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
37314 wrl += gamma1l;
37315 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
37316 wrl += wr16l;
37317 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
37318 }
37319
37320 w[i*2] = wrh |= 0;
37321 w[i*2 + 1] = wrl |= 0;
37322
37323 // Ch
37324 var chh = (eh & fh) ^ (~eh & gh);
37325 var chl = (el & fl) ^ (~el & gl);
37326
37327 // Maj
37328 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
37329 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
37330
37331 // Sigma0
37332 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
37333 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
37334
37335 // Sigma1
37336 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
37337 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
37338
37339 // K(round)
37340 var krh = k[i*2];
37341 var krl = k[i*2+1];
37342
37343 // t1 = h + sigma1 + ch + K(round) + W(round)
37344 var t1l = hl + sigma1l;
37345 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
37346 t1l += chl;
37347 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
37348 t1l += krl;
37349 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
37350 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
37351 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
37352
37353 // t2 = sigma0 + maj
37354 var t2l = sigma0l + majl;
37355 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
37356
37357 // Update working variables
37358 hh = gh;
37359 hl = gl;
37360 gh = fh;
37361 gl = fl;
37362 fh = eh;
37363 fl = el;
37364 el = (dl + t1l) | 0;
37365 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
37366 dh = ch;
37367 dl = cl;
37368 ch = bh;
37369 cl = bl;
37370 bh = ah;
37371 bl = al;
37372 al = (t1l + t2l) | 0;
37373 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
37374 }
37375
37376 // Intermediate hash
37377 h0l = h[1] = (h0l + al) | 0;
37378 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
37379 h1l = h[3] = (h1l + bl) | 0;
37380 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
37381 h2l = h[5] = (h2l + cl) | 0;
37382 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
37383 h3l = h[7] = (h3l + dl) | 0;
37384 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
37385 h4l = h[9] = (h4l + el) | 0;
37386 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
37387 h5l = h[11] = (h5l + fl) | 0;
37388 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
37389 h6l = h[13] = (h6l + gl) | 0;
37390 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
37391 h7l = h[15] = (h7l + hl) | 0;
37392 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
37393 }
37394 };
37395
37396
37397 //// hmac.js
37398
37399 /** @fileOverview HMAC implementation.
37400 *
37401 * @author Emily Stark
37402 * @author Mike Hamburg
37403 * @author Dan Boneh
37404 */
37405
37406 /** HMAC with the specified hash function.
37407 * @constructor
37408 * @param {bitArray} key the key for HMAC.
37409 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
37410 */
37411 sjcl.misc.hmac = function (key, Hash) {
37412 this._hash = Hash = Hash || sjcl.hash.sha256;
37413 var exKey = [[],[]], i,
37414 bs = Hash.prototype.blockSize / 32;
37415 this._baseHash = [new Hash(), new Hash()];
37416
37417 if (key.length > bs) {
37418 key = Hash.hash(key);
37419 }
37420
37421 for (i=0; i<bs; i++) {
37422 exKey[0][i] = key[i]^0x36363636;
37423 exKey[1][i] = key[i]^0x5C5C5C5C;
37424 }
37425
37426 this._baseHash[0].update(exKey[0]);
37427 this._baseHash[1].update(exKey[1]);
37428 this._resultHash = new Hash(this._baseHash[0]);
37429 };
37430
37431 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
37432 * @param {bitArray|String} data The data to mac.
37433 */
37434 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
37435 if (!this._updated) {
37436 this.update(data);
37437 return this.digest(data);
37438 } else {
37439 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
37440 }
37441 };
37442
37443 sjcl.misc.hmac.prototype.reset = function () {
37444 this._resultHash = new this._hash(this._baseHash[0]);
37445 this._updated = false;
37446 };
37447
37448 sjcl.misc.hmac.prototype.update = function (data) {
37449 this._updated = true;
37450 this._resultHash.update(data);
37451 };
37452
37453 sjcl.misc.hmac.prototype.digest = function () {
37454 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
37455
37456 this.reset();
37457
37458 return result;
37459 };
37460
37461
37462 //// pbkdf2.js
37463
37464
37465 /** @fileOverview Password-based key-derivation function, version 2.0.
37466 *
37467 * @author Emily Stark
37468 * @author Mike Hamburg
37469 * @author Dan Boneh
37470 */
37471
37472 /** Password-Based Key-Derivation Function, version 2.0.
37473 *
37474 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
37475 *
37476 * This is the method specified by RSA's PKCS #5 standard.
37477 *
37478 * @param {bitArray|String} password The password.
37479 * @param {bitArray|String} salt The salt. Should have lots of entropy.
37480 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
37481 * @param {Number} [length] The length of the derived key. Defaults to the
37482 output size of the hash function.
37483 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
37484 * @return {bitArray} the derived key.
37485 */
37486 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
37487 count = count || 1000;
37488
37489 if (length < 0 || count < 0) {
37490 throw sjcl.exception.invalid("invalid params to pbkdf2");
37491 }
37492
37493 if (typeof password === "string") {
37494 password = sjcl.codec.utf8String.toBits(password);
37495 }
37496
37497 if (typeof salt === "string") {
37498 salt = sjcl.codec.utf8String.toBits(salt);
37499 }
37500
37501 Prff = Prff || sjcl.misc.hmac;
37502
37503 var prf = new Prff(password),
37504 u, ui, i, j, k, out = [], b = sjcl.bitArray;
37505
37506 for (k = 1; 32 * out.length < (length || 1); k++) {
37507 u = ui = prf.encrypt(b.concat(salt,[k]));
37508
37509 for (i=1; i<count; i++) {
37510 ui = prf.encrypt(ui);
37511 for (j=0; j<ui.length; j++) {
37512 u[j] ^= ui[j];
37513 }
37514 }
37515
37516 out = out.concat(u);
37517 }
37518
37519 if (length) { out = b.clamp(out, length); }
37520
37521 return out;
37522 };
37523
37524
37525 //// sha256.js
37526
37527 /** @fileOverview Javascript SHA-256 implementation.
37528 *
37529 * An older version of this implementation is available in the public
37530 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
37531 * Stanford University 2008-2010 and BSD-licensed for liability
37532 * reasons.
37533 *
37534 * Special thanks to Aldo Cortesi for pointing out several bugs in
37535 * this code.
37536 *
37537 * @author Emily Stark
37538 * @author Mike Hamburg
37539 * @author Dan Boneh
37540 */
37541
37542 /**
37543 * Context for a SHA-256 operation in progress.
37544 * @constructor
37545 * @class Secure Hash Algorithm, 256 bits.
37546 */
37547 sjcl.hash.sha256 = function (hash) {
37548 if (!this._key[0]) { this._precompute(); }
37549 if (hash) {
37550 this._h = hash._h.slice(0);
37551 this._buffer = hash._buffer.slice(0);
37552 this._length = hash._length;
37553 } else {
37554 this.reset();
37555 }
37556 };
37557
37558 /**
37559 * Hash a string or an array of words.
37560 * @static
37561 * @param {bitArray|String} data the data to hash.
37562 * @return {bitArray} The hash value, an array of 16 big-endian words.
37563 */
37564 sjcl.hash.sha256.hash = function (data) {
37565 return (new sjcl.hash.sha256()).update(data).finalize();
37566 };
37567
37568 sjcl.hash.sha256.prototype = {
37569 /**
37570 * The hash's block size, in bits.
37571 * @constant
37572 */
37573 blockSize: 512,
37574
37575 /**
37576 * Reset the hash state.
37577 * @return this
37578 */
37579 reset:function () {
37580 this._h = this._init.slice(0);
37581 this._buffer = [];
37582 this._length = 0;
37583 return this;
37584 },
37585
37586 /**
37587 * Input several words to the hash.
37588 * @param {bitArray|String} data the data to hash.
37589 * @return this
37590 */
37591 update: function (data) {
37592 if (typeof data === "string") {
37593 data = sjcl.codec.utf8String.toBits(data);
37594 }
37595 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
37596 ol = this._length,
37597 nl = this._length = ol + sjcl.bitArray.bitLength(data);
37598 for (i = 512+ol & -512; i <= nl; i+= 512) {
37599 this._block(b.splice(0,16));
37600 }
37601 return this;
37602 },
37603
37604 /**
37605 * Complete hashing and output the hash value.
37606 * @return {bitArray} The hash value, an array of 8 big-endian words.
37607 */
37608 finalize:function () {
37609 var i, b = this._buffer, h = this._h;
37610
37611 // Round out and push the buffer
37612 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
37613
37614 // Round out the buffer to a multiple of 16 words, less the 2 length words.
37615 for (i = b.length + 2; i & 15; i++) {
37616 b.push(0);
37617 }
37618
37619 // append the length
37620 b.push(Math.floor(this._length / 0x100000000));
37621 b.push(this._length | 0);
37622
37623 while (b.length) {
37624 this._block(b.splice(0,16));
37625 }
37626
37627 this.reset();
37628 return h;
37629 },
37630
37631 /**
37632 * The SHA-256 initialization vector, to be precomputed.
37633 * @private
37634 */
37635 _init:[],
37636 /*
37637 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
37638 */
37639
37640 /**
37641 * The SHA-256 hash key, to be precomputed.
37642 * @private
37643 */
37644 _key:[],
37645 /*
37646 _key:
37647 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37648 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37649 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37650 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37651 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37652 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37653 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37654 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
37655 */
37656
37657
37658 /**
37659 * Function to precompute _init and _key.
37660 * @private
37661 */
37662 _precompute: function () {
37663 var i = 0, prime = 2, factor;
37664
37665 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
37666
37667 outer: for (; i<64; prime++) {
37668 for (factor=2; factor*factor <= prime; factor++) {
37669 if (prime % factor === 0) {
37670 // not a prime
37671 continue outer;
37672 }
37673 }
37674
37675 if (i<8) {
37676 this._init[i] = frac(Math.pow(prime, 1/2));
37677 }
37678 this._key[i] = frac(Math.pow(prime, 1/3));
37679 i++;
37680 }
37681 },
37682
37683 /**
37684 * Perform one cycle of SHA-256.
37685 * @param {bitArray} words one block of words.
37686 * @private
37687 */
37688 _block:function (words) {
37689 var i, tmp, a, b,
37690 w = words.slice(0),
37691 h = this._h,
37692 k = this._key,
37693 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
37694 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
37695
37696 /* Rationale for placement of |0 :
37697 * If a value can overflow is original 32 bits by a factor of more than a few
37698 * million (2^23 ish), there is a possibility that it might overflow the
37699 * 53-bit mantissa and lose precision.
37700 *
37701 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
37702 * propagates around the loop, and on the hash state h[]. I don't believe
37703 * that the clamps on h4 and on h0 are strictly necessary, but it's close
37704 * (for h4 anyway), and better safe than sorry.
37705 *
37706 * The clamps on h[] are necessary for the output to be correct even in the
37707 * common case and for short inputs.
37708 */
37709 for (i=0; i<64; i++) {
37710 // load up the input word for this round
37711 if (i<16) {
37712 tmp = w[i];
37713 } else {
37714 a = w[(i+1 ) & 15];
37715 b = w[(i+14) & 15];
37716 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
37717 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
37718 w[i&15] + w[(i+9) & 15]) | 0;
37719 }
37720
37721 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
37722
37723 // shift register
37724 h7 = h6; h6 = h5; h5 = h4;
37725 h4 = h3 + tmp | 0;
37726 h3 = h2; h2 = h1; h1 = h0;
37727
37728 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
37729 }
37730
37731 h[0] = h[0]+h0 | 0;
37732 h[1] = h[1]+h1 | 0;
37733 h[2] = h[2]+h2 | 0;
37734 h[3] = h[3]+h3 | 0;
37735 h[4] = h[4]+h4 | 0;
37736 h[5] = h[5]+h5 | 0;
37737 h[6] = h[6]+h6 | 0;
37738 h[7] = h[7]+h7 | 0;
37739 }
37740 };
37741 </script>
37742 <script>// An extremely basic translation library
37743 //
37744 // Example usage:
37745 //
37746 // Set some html to be translated. Do this using the 'data-translate' attribute:
37747 //
37748 // <div data-translate>Test</div>
37749 // <div data-translate-html><em>keep em tag</em></div>
37750 // <input data-translate-placeholder placeholder="Example placeholder">
37751 // <span data-translate-title title="Example title"></span>
37752 //
37753 // Obtain all the phrases to be translated via js debug console:
37754 //
37755 // Translate.phrasesAsJson();
37756 //
37757 // Use that template to translate the phrases into another language.
37758 // Leave the key the same. Change the value to the new language.
37759 //
37760 // Create a js file to load the new phrases. In this example for Spanish,
37761 // es.js will contain the following code:
37762 //
37763 // Translate.loadForeignPhrases("es", {
37764 // "Test": "Test in Spanish",
37765 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
37766 // "Example placeholder": "Example placeholder in Spanish"
37767 // "Example title": "Example title in Spanish"
37768 // });
37769 //
37770 // In your UI put a listener for clicking on the Spanish button:
37771 //
37772 // mySpanishButton.addEventListener("click", function() {
37773 // Translate.setLanguage("es");
37774 // });
37775 // myEnglishButton.addEventListener("click", function() {
37776 // Translate.setLanguage("en");
37777 // });
37778
37779 Translate = new (function() {
37780
37781 var defaultLanguage = "en";
37782
37783 var allPhrases = {};
37784 allPhrases[defaultLanguage] = {};
37785
37786 // Node types
37787
37788 var text = {
37789 selector: "[data-translate]",
37790 getKey: function() {
37791 return this.textContent.trim().replace(/\s+/g, " ");
37792 },
37793 setPhrase: function(p) {
37794 this.textContent = p;
37795 },
37796 }
37797
37798 var html = {
37799 selector: "[data-translate-html]",
37800 getKey: function() {
37801 return this.innerHTML.trim().replace(/\s+/g, " ");
37802 },
37803 setPhrase: function(p) {
37804 this.innerHTML = p;
37805 },
37806 }
37807
37808 var placeholder = {
37809 selector: "[data-translate-placeholder]",
37810 getKey: function() {
37811 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
37812 },
37813 setPhrase: function(p) {
37814 this.setAttribute("placeholder", p);
37815 },
37816 }
37817
37818 var title = {
37819 selector: "[data-translate-title]",
37820 getKey: function() {
37821 return this.getAttribute("title").trim().replace(/\s+/g, " ");
37822 },
37823 setPhrase: function(p) {
37824 this.setAttribute("title", p);
37825 },
37826 }
37827
37828 // Get elements to be translated
37829 var allEls = getEls(text)
37830 .concat(getEls(html))
37831 .concat(getEls(placeholder))
37832 .concat(getEls(title));
37833
37834 // Provides access to phrases from a non-default language.
37835 // See phrases_en.js for example usage.
37836 this.loadForeignPhrases = function(language, phrases) {
37837 allPhrases[language] = phrases;
37838 }
37839
37840 // Displays a different language, eg "en" or "fr"
37841 this.setLanguage = function(language) {
37842 for (var i=0; i<allEls.length; i++) {
37843 var el = allEls[i];
37844 var key = el.key;
37845 if (!(language in allPhrases)) {
37846 console.log(language + " not in allPhrases");
37847 return;
37848 }
37849 if (!(key in allPhrases[language])) {
37850 console.log(language + " does not contain phrase: " + key);
37851 return;
37852 }
37853 var phrase = allPhrases[language][key];
37854 el.setPhrase(phrase);
37855 }
37856 }
37857
37858 // Converts the phrases to a key-pair json file.
37859 // This is a good way to export phrases for use in translation tools.
37860 this.phrasesAsJson = function(language) {
37861 var keys = [];
37862 for (var i=0; i<allEls.length; i++) {
37863 var el = allEls[i];
37864 var key = el.key;
37865 keys.push(key);
37866 }
37867 keys.sort();
37868 var output = {};
37869 for (var i=0; i<keys.length; i++) {
37870 var key = keys[i];
37871 var translated = "";
37872 if (language in allPhrases && key in allPhrases[language]) {
37873 translated = allPhrases[language][key];
37874 }
37875 output[key] = translated;
37876 }
37877 return JSON.stringify(output, null, 2);
37878 }
37879
37880 function getEls(nodeType) {
37881 var nodes = document.querySelectorAll(nodeType.selector);
37882 var els = [];
37883 for (var i=0; i<nodes.length; i++) {
37884 var node = nodes[i];
37885 node.getKey = nodeType.getKey;
37886 node.setPhrase = nodeType.setPhrase;
37887 node.key = node.getKey();
37888 allPhrases[defaultLanguage][node.key] = node.key;
37889 els.push(node);
37890 }
37891 return els;
37892 }
37893
37894 })();
37895 </script>
37896 <script>Translate.loadForeignPhrases("en",
37897 {
37898 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
37899 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
37900 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
37901 "<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).",
37902 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
37903 "Account": "Account",
37904 "Address": "Address",
37905 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
37906 "BIP32 Derivation Path": "BIP32 Derivation Path",
37907 "BIP32 Extended Key": "BIP32 Extended Key",
37908 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
37909 "BIP32 Root Key": "BIP32 Root Key",
37910 "BIP39 Mnemonic": "BIP39 Mnemonic",
37911 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
37912 "BIP39 Seed": "BIP39 Seed",
37913 "Base 10": "Base 10",
37914 "Base 6": "Base 6",
37915 "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.",
37916 "Binary": "Binary",
37917 "Bitcoin Core": "Bitcoin Core",
37918 "Bits Per Event": "Bits Per Event",
37919 "Block Explorers": "Block Explorers",
37920 "Can be used with": "Can be used with",
37921 "Card": "Card",
37922 "Coin": "Coin",
37923 "Dice": "Dice",
37924 "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.",
37925 "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.",
37926 "Entropy": "Entropy",
37927 "Entropy Type": "Entropy Type",
37928 "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.",
37929 "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>.",
37930 "Event Count": "Event Count",
37931 "External / Internal": "External / Internal",
37932 "Filtered Entropy": "Filtered Entropy",
37933 "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>",
37934 "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>.",
37935 "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>.",
37936 "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>",
37937 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
37938 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
37939 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
37940 "Get the source code from the repository": "Get the source code from the repository",
37941 "Hex": "Hex",
37942 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
37943 "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.",
37944 "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.",
37945 "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.",
37946 "Libraries": "Libraries",
37947 "Mnemonic Language": "Mnemonic Language",
37948 "Mnemonic Length": "Mnemonic Length",
37949 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
37950 "More info": "More info",
37951 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
37952 "Mycelium Wallet": "Mycelium Wallet",
37953 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
37954 "Offline Usage": "Offline Usage",
37955 "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.",
37956 "Path": "Path",
37957 "Private Key": "Private Key",
37958 "Private Keys": "Private Keys",
37959 "Public Key": "Public Key",
37960 "Purpose": "Purpose",
37961 "Raw Binary": "Raw Binary",
37962 "Read more": "Read more",
37963 "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>",
37964 "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>",
37965 "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>",
37966 "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>",
37967 "Show": "Show",
37968 "Show more rows": "Show more rows",
37969 "Strength": "Strength",
37970 "Supply my own source of entropy": "Supply my own source of entropy",
37971 "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.",
37972 "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>.",
37973 "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.",
37974 "This project is 100% open-source code": "This project is 100% open-source code",
37975 "Toggle": "Toggle",
37976 "Total Bits": "Total Bits",
37977 "Use hardened addresses": "Use hardened addresses",
37978 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
37979 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
37980 "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>.",
37981 "Valid entropy values include:": "Valid entropy values include:",
37982 "Warning": "Warning",
37983 "Word Count": "Word Count",
37984 "You are not a good source of entropy.": "You are not a good source of entropy.",
37985 "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).",
37986 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
37987 "words": "words"
37988 }
37989 );
37990 </script>
37991 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
37992 WORDLISTS["english"] = [
37993 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
37994 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
37995 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
37996 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
37997 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
37998 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
37999 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
38000 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
38001 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
38002 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
38003 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
38004 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
38005 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
38006 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
38007 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
38008 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
38009 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
38010 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
38011 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
38012 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
38013 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
38014 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
38015 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
38016 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
38017 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
38018 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
38019 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
38020 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
38021 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
38022 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
38023 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
38024 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
38025 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
38026 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
38027 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
38028 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
38029 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
38030 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
38031 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
38032 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
38033 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
38034 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
38035 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
38036 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
38037 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
38038 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
38039 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
38040 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
38041 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
38042 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
38043 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
38044 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
38045 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
38046 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
38047 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
38048 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
38049 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
38050 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
38051 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
38052 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
38053 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
38054 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
38055 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
38056 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
38057 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
38058 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
38059 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
38060 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
38061 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
38062 "film","filter","final","find","fine","finger","finish","fire","firm","first",
38063 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
38064 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
38065 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
38066 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
38067 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
38068 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
38069 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
38070 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
38071 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
38072 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
38073 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
38074 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
38075 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
38076 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
38077 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
38078 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
38079 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
38080 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
38081 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
38082 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
38083 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
38084 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
38085 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
38086 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
38087 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
38088 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
38089 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
38090 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
38091 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
38092 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
38093 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
38094 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
38095 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
38096 "liar","liberty","library","license","life","lift","light","like","limb","limit",
38097 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
38098 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
38099 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
38100 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
38101 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
38102 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
38103 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
38104 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
38105 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
38106 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
38107 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
38108 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
38109 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
38110 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
38111 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
38112 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
38113 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
38114 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
38115 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
38116 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
38117 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
38118 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
38119 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
38120 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
38121 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
38122 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
38123 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
38124 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
38125 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
38126 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
38127 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
38128 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
38129 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
38130 "prize","problem","process","produce","profit","program","project","promote","proof","property",
38131 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
38132 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
38133 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
38134 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
38135 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
38136 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
38137 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
38138 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
38139 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
38140 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
38141 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
38142 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
38143 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
38144 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
38145 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
38146 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
38147 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
38148 "scrub","sea","search","season","seat","second","secret","section","security","seed",
38149 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
38150 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
38151 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
38152 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
38153 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
38154 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
38155 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
38156 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
38157 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
38158 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
38159 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
38160 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
38161 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
38162 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
38163 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
38164 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
38165 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
38166 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
38167 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
38168 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
38169 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
38170 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
38171 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
38172 "thank","that","theme","then","theory","there","they","thing","this","thought",
38173 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
38174 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
38175 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
38176 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
38177 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
38178 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
38179 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
38180 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
38181 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
38182 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
38183 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
38184 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
38185 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
38186 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
38187 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
38188 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
38189 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
38190 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
38191 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
38192 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
38193 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
38194 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
38195 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
38196 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
38197 "yellow","you","young","youth","zebra","zero","zone","zoo"]
38198 </script>
38199 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38200 WORDLISTS["japanese"] = [
38201 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
38202 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
38203 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
38204 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
38205 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
38206 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
38207 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
38208 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
38209 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
38210 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
38211 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
38212 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
38213 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
38214 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
38215 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
38216 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
38217 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
38218 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
38219 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
38220 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
38221 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
38222 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
38223 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
38224 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
38225 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
38226 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
38227 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
38228 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
38229 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
38230 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
38231 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
38232 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
38233 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
38234 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
38235 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
38236 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
38237 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
38238 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
38239 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
38240 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
38241 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
38242 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
38243 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
38244 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
38245 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
38246 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
38247 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
38248 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
38249 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
38250 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
38251 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
38252 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
38253 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
38254 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
38255 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
38256 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
38257 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
38258 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
38259 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
38260 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
38261 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
38262 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
38263 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
38264 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
38265 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
38266 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
38267 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
38268 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
38269 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
38270 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
38271 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
38272 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
38273 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
38274 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
38275 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
38276 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
38277 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
38278 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
38279 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
38280 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
38281 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
38282 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
38283 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
38284 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
38285 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
38286 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
38287 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
38288 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
38289 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
38290 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
38291 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
38292 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
38293 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
38294 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
38295 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
38296 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
38297 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
38298 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
38299 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
38300 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
38301 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
38302 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
38303 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
38304 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
38305 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
38306 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
38307 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
38308 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
38309 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
38310 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
38311 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
38312 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
38313 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
38314 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
38315 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
38316 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
38317 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
38318 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
38319 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
38320 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
38321 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
38322 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
38323 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
38324 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
38325 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
38326 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
38327 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
38328 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
38329 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
38330 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
38331 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
38332 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
38333 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
38334 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
38335 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
38336 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
38337 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
38338 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
38339 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
38340 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
38341 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
38342 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
38343 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
38344 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
38345 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
38346 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
38347 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
38348 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
38349 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
38350 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
38351 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
38352 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
38353 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
38354 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
38355 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
38356 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
38357 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
38358 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
38359 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
38360 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
38361 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
38362 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
38363 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
38364 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
38365 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
38366 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
38367 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
38368 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
38369 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
38370 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
38371 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
38372 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
38373 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
38374 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
38375 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
38376 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
38377 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
38378 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
38379 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
38380 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
38381 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
38382 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
38383 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
38384 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
38385 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
38386 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
38387 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
38388 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
38389 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
38390 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
38391 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
38392 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
38393 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
38394 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
38395 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
38396 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
38397 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
38398 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
38399 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
38400 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
38401 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
38402 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
38403 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
38404 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
38405 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
38406 </script>
38407 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38408 WORDLISTS["spanish"] = [
38409 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
38410 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
38411 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
38412 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
38413 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
38414 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
38415 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
38416 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
38417 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
38418 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
38419 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
38420 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
38421 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
38422 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
38423 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
38424 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
38425 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
38426 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
38427 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
38428 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
38429 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
38430 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
38431 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
38432 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
38433 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
38434 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
38435 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
38436 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
38437 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
38438 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
38439 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
38440 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
38441 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
38442 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
38443 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
38444 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
38445 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
38446 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
38447 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
38448 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
38449 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
38450 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
38451 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
38452 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
38453 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
38454 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
38455 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
38456 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
38457 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
38458 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
38459 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
38460 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
38461 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
38462 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
38463 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
38464 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
38465 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
38466 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
38467 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
38468 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
38469 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
38470 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
38471 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
38472 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
38473 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
38474 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
38475 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
38476 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
38477 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
38478 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
38479 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
38480 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
38481 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
38482 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
38483 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
38484 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
38485 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
38486 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
38487 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
38488 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
38489 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
38490 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
38491 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
38492 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
38493 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
38494 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
38495 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
38496 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
38497 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
38498 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
38499 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
38500 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
38501 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
38502 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
38503 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
38504 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
38505 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
38506 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
38507 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
38508 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
38509 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
38510 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
38511 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
38512 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
38513 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
38514 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
38515 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
38516 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
38517 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
38518 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
38519 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
38520 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
38521 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
38522 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
38523 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
38524 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
38525 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
38526 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
38527 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
38528 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
38529 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
38530 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
38531 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
38532 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
38533 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
38534 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
38535 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
38536 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
38537 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
38538 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
38539 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
38540 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
38541 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
38542 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
38543 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
38544 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
38545 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
38546 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
38547 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
38548 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
38549 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
38550 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
38551 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
38552 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
38553 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
38554 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
38555 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
38556 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
38557 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
38558 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
38559 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
38560 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
38561 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
38562 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
38563 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
38564 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
38565 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
38566 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
38567 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
38568 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
38569 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
38570 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
38571 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
38572 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
38573 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
38574 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
38575 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
38576 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
38577 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
38578 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
38579 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
38580 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
38581 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
38582 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
38583 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
38584 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
38585 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
38586 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
38587 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
38588 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
38589 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
38590 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
38591 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
38592 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
38593 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
38594 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
38595 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
38596 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
38597 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
38598 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
38599 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
38600 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
38601 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
38602 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
38603 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
38604 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
38605 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
38606 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
38607 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
38608 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
38609 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
38610 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
38611 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
38612 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
38613 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
38614 </script>
38615 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38616 WORDLISTS["chinese_simplified"] = [
38617 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
38618 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
38619 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
38620 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
38621 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
38622 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
38623 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
38624 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
38625 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
38626 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
38627 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
38628 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
38629 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
38630 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
38631 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
38632 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
38633 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
38634 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
38635 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
38636 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
38637 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
38638 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
38639 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
38640 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
38641 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
38642 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
38643 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
38644 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
38645 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
38646 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
38647 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
38648 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
38649 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
38650 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
38651 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
38652 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
38653 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
38654 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
38655 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
38656 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
38657 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
38658 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
38659 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
38660 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
38661 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
38662 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
38663 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
38664 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
38665 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
38666 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
38667 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
38668 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
38669 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
38670 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
38671 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
38672 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
38673 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
38674 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
38675 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
38676 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
38677 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
38678 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
38679 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
38680 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
38681 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
38682 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
38683 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
38684 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
38685 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
38686 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
38687 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
38688 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
38689 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
38690 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
38691 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
38692 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
38693 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
38694 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
38695 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
38696 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
38697 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
38698 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
38699 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
38700 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
38701 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
38702 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
38703 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
38704 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
38705 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
38706 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
38707 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
38708 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
38709 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
38710 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
38711 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
38712 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
38713 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
38714 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
38715 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
38716 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
38717 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
38718 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
38719 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
38720 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
38721 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
38722 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
38723 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
38724 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
38725 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
38726 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
38727 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
38728 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
38729 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
38730 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
38731 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
38732 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
38733 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
38734 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
38735 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
38736 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
38737 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
38738 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
38739 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
38740 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
38741 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
38742 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
38743 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
38744 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
38745 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
38746 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
38747 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
38748 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
38749 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
38750 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
38751 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
38752 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
38753 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
38754 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
38755 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
38756 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
38757 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
38758 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
38759 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
38760 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
38761 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
38762 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
38763 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
38764 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
38765 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
38766 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
38767 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
38768 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
38769 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
38770 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
38771 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
38772 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
38773 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
38774 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
38775 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
38776 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
38777 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
38778 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
38779 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
38780 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
38781 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
38782 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
38783 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
38784 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
38785 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
38786 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
38787 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
38788 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
38789 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
38790 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
38791 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
38792 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
38793 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
38794 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
38795 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
38796 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
38797 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
38798 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
38799 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
38800 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
38801 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
38802 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
38803 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
38804 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
38805 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
38806 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
38807 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
38808 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
38809 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
38810 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
38811 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
38812 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
38813 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
38814 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
38815 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
38816 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
38817 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
38818 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
38819 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
38820 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
38821 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
38822 </script>
38823 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38824 WORDLISTS["chinese_traditional"] = [
38825 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
38826 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
38827 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
38828 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
38829 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
38830 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
38831 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
38832 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
38833 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
38834 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
38835 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
38836 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
38837 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
38838 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
38839 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
38840 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
38841 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
38842 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
38843 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
38844 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
38845 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
38846 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
38847 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
38848 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
38849 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
38850 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
38851 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
38852 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
38853 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
38854 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
38855 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
38856 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
38857 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
38858 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
38859 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
38860 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
38861 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
38862 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
38863 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
38864 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
38865 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
38866 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
38867 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
38868 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
38869 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
38870 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
38871 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
38872 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
38873 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
38874 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
38875 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
38876 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
38877 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
38878 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
38879 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
38880 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
38881 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
38882 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
38883 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
38884 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
38885 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
38886 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
38887 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
38888 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
38889 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
38890 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
38891 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
38892 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
38893 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
38894 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
38895 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
38896 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
38897 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
38898 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
38899 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
38900 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
38901 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
38902 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
38903 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
38904 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
38905 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
38906 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
38907 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
38908 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
38909 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
38910 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
38911 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
38912 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
38913 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
38914 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
38915 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
38916 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
38917 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
38918 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
38919 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
38920 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
38921 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
38922 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
38923 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
38924 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
38925 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
38926 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
38927 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
38928 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
38929 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
38930 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
38931 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
38932 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
38933 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
38934 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
38935 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
38936 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
38937 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
38938 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
38939 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
38940 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
38941 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
38942 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
38943 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
38944 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
38945 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
38946 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
38947 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
38948 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
38949 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
38950 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
38951 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
38952 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
38953 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
38954 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
38955 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
38956 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
38957 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
38958 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
38959 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
38960 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
38961 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
38962 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
38963 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
38964 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
38965 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
38966 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
38967 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
38968 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
38969 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
38970 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
38971 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
38972 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
38973 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
38974 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
38975 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
38976 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
38977 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
38978 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
38979 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
38980 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
38981 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
38982 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
38983 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
38984 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
38985 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
38986 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
38987 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
38988 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
38989 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
38990 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
38991 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
38992 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
38993 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
38994 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
38995 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
38996 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
38997 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
38998 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
38999 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
39000 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
39001 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
39002 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
39003 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
39004 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
39005 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
39006 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
39007 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
39008 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
39009 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
39010 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
39011 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
39012 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
39013 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
39014 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
39015 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
39016 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
39017 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
39018 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
39019 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
39020 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
39021 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
39022 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
39023 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
39024 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
39025 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
39026 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
39027 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
39028 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
39029 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
39030 </script>
39031 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
39032 WORDLISTS["french"] = [
39033 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
39034 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
39035 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
39036 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
39037 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
39038 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
39039 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
39040 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
39041 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
39042 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
39043 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
39044 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
39045 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
39046 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
39047 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
39048 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
39049 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
39050 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
39051 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
39052 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
39053 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
39054 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
39055 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
39056 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
39057 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
39058 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
39059 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
39060 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
39061 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
39062 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
39063 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
39064 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
39065 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
39066 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
39067 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
39068 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
39069 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
39070 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
39071 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
39072 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
39073 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
39074 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
39075 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
39076 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
39077 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
39078 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
39079 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
39080 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
39081 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
39082 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
39083 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
39084 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
39085 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
39086 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
39087 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
39088 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
39089 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
39090 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
39091 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
39092 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
39093 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
39094 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
39095 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
39096 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
39097 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
39098 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
39099 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
39100 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
39101 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
39102 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
39103 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
39104 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
39105 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
39106 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
39107 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
39108 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
39109 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
39110 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
39111 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
39112 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
39113 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
39114 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
39115 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
39116 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
39117 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
39118 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
39119 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
39120 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
39121 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
39122 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
39123 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
39124 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
39125 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
39126 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
39127 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
39128 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
39129 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
39130 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
39131 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
39132 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
39133 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
39134 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
39135 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
39136 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
39137 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
39138 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
39139 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
39140 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
39141 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
39142 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
39143 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
39144 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
39145 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
39146 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
39147 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
39148 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
39149 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
39150 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
39151 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
39152 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
39153 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
39154 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
39155 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
39156 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
39157 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
39158 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
39159 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
39160 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
39161 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
39162 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
39163 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
39164 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
39165 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
39166 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
39167 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
39168 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
39169 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
39170 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
39171 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
39172 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
39173 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
39174 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
39175 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
39176 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
39177 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
39178 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
39179 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
39180 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
39181 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
39182 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
39183 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
39184 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
39185 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
39186 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
39187 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
39188 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
39189 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
39190 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
39191 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
39192 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
39193 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
39194 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
39195 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
39196 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
39197 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
39198 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
39199 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
39200 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
39201 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
39202 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
39203 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
39204 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
39205 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
39206 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
39207 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
39208 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
39209 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
39210 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
39211 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
39212 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
39213 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
39214 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
39215 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
39216 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
39217 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
39218 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
39219 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
39220 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
39221 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
39222 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
39223 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
39224 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
39225 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
39226 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
39227 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
39228 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
39229 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
39230 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
39231 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
39232 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
39233 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
39234 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
39235 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
39236 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
39237 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
39238 </script>
39239 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
39240 WORDLISTS["italian"] = [
39241 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
39242 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
39243 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
39244 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
39245 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
39246 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
39247 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
39248 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
39249 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
39250 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
39251 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
39252 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
39253 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
39254 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
39255 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
39256 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
39257 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
39258 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
39259 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
39260 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
39261 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
39262 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
39263 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
39264 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
39265 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
39266 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
39267 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
39268 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
39269 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
39270 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
39271 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
39272 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
39273 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
39274 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
39275 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
39276 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
39277 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
39278 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
39279 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
39280 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
39281 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
39282 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
39283 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
39284 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
39285 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
39286 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
39287 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
39288 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
39289 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
39290 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
39291 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
39292 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
39293 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
39294 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
39295 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
39296 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
39297 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
39298 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
39299 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
39300 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
39301 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
39302 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
39303 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
39304 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
39305 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
39306 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
39307 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
39308 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
39309 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
39310 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
39311 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
39312 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
39313 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
39314 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
39315 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
39316 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
39317 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
39318 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
39319 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
39320 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
39321 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
39322 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
39323 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
39324 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
39325 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
39326 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
39327 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
39328 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
39329 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
39330 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
39331 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
39332 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
39333 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
39334 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
39335 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
39336 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
39337 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
39338 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
39339 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
39340 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
39341 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
39342 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
39343 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
39344 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
39345 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
39346 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
39347 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
39348 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
39349 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
39350 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
39351 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
39352 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
39353 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
39354 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
39355 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
39356 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
39357 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
39358 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
39359 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
39360 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
39361 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
39362 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
39363 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
39364 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
39365 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
39366 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
39367 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
39368 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
39369 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
39370 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
39371 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
39372 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
39373 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
39374 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
39375 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
39376 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
39377 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
39378 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
39379 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
39380 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
39381 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
39382 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
39383 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
39384 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
39385 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
39386 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
39387 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
39388 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
39389 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
39390 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
39391 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
39392 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
39393 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
39394 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
39395 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
39396 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
39397 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
39398 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
39399 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
39400 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
39401 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
39402 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
39403 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
39404 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
39405 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
39406 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
39407 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
39408 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
39409 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
39410 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
39411 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
39412 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
39413 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
39414 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
39415 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
39416 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
39417 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
39418 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
39419 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
39420 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
39421 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
39422 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
39423 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
39424 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
39425 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
39426 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
39427 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
39428 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
39429 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
39430 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
39431 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
39432 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
39433 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
39434 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
39435 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
39436 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
39437 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
39438 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
39439 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
39440 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
39441 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
39442 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
39443 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
39444 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
39445 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
39446 </script>
39447 <script>/*
39448 * Copyright (c) 2013 Pavol Rusnak
39449 *
39450 * Permission is hereby granted, free of charge, to any person obtaining a copy of
39451 * this software and associated documentation files (the "Software"), to deal in
39452 * the Software without restriction, including without limitation the rights to
39453 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
39454 * of the Software, and to permit persons to whom the Software is furnished to do
39455 * so, subject to the following conditions:
39456 *
39457 * The above copyright notice and this permission notice shall be included in all
39458 * copies or substantial portions of the Software.
39459 *
39460 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39461 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39462 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
39463 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39464 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
39465 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39466 */
39467
39468 /*
39469 * Javascript port from python by Ian Coleman
39470 *
39471 * Requires code from sjcl
39472 * https://github.com/bitwiseshiftleft/sjcl
39473 */
39474
39475 var Mnemonic = function(language) {
39476
39477 var PBKDF2_ROUNDS = 2048;
39478 var RADIX = 2048;
39479
39480 var self = this;
39481 var wordlist = [];
39482
39483 var hmacSHA512 = function(key) {
39484 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
39485 this.encrypt = function() {
39486 return hasher.encrypt.apply(hasher, arguments);
39487 };
39488 };
39489
39490 function init() {
39491 wordlist = WORDLISTS[language];
39492 if (wordlist.length != RADIX) {
39493 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
39494 throw err;
39495 }
39496 }
39497
39498 self.generate = function(strength) {
39499 strength = strength || 128;
39500 var r = strength % 32;
39501 if (r > 0) {
39502 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
39503 }
39504 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
39505 if (!hasStrongCrypto) {
39506 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
39507 }
39508 var buffer = new Uint8Array(strength / 8);
39509 var data = crypto.getRandomValues(buffer);
39510 return self.toMnemonic(data);
39511 }
39512
39513 self.toMnemonic = function(byteArray) {
39514 if (byteArray.length % 4 > 0) {
39515 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
39516 }
39517
39518 //h = hashlib.sha256(data).hexdigest()
39519 var data = byteArrayToWordArray(byteArray);
39520 var hash = sjcl.hash.sha256.hash(data);
39521 var h = sjcl.codec.hex.fromBits(hash);
39522
39523 // b is a binary string, eg '00111010101100...'
39524 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
39525 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
39526 //
39527 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
39528 // c = bin(int(h, 16))[2:].zfill(256)
39529 // d = c[:len(data) * 8 / 32]
39530 var a = byteArrayToBinaryString(byteArray);
39531 var c = zfill(hexStringToBinaryString(h), 256);
39532 var d = c.substring(0, byteArray.length * 8 / 32);
39533 // b = line1 + line2
39534 var b = a + d;
39535
39536 var result = [];
39537 var blen = b.length / 11;
39538 for (var i=0; i<blen; i++) {
39539 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
39540 result.push(wordlist[idx]);
39541 }
39542 return self.joinWords(result);
39543 }
39544
39545 self.check = function(mnemonic) {
39546 var mnemonic = self.splitWords(mnemonic);
39547 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
39548 return false
39549 }
39550 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
39551 var idx = [];
39552 for (var i=0; i<mnemonic.length; i++) {
39553 var word = mnemonic[i];
39554 var wordIndex = wordlist.indexOf(word);
39555 if (wordIndex == -1) {
39556 return false;
39557 }
39558 var binaryIndex = zfill(wordIndex.toString(2), 11);
39559 idx.push(binaryIndex);
39560 }
39561 var b = idx.join('');
39562 var l = b.length;
39563 //d = b[:l / 33 * 32]
39564 //h = b[-l / 33:]
39565 var d = b.substring(0, l / 33 * 32);
39566 var h = b.substring(l - l / 33, l);
39567 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
39568 var nd = binaryStringToWordArray(d);
39569 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
39570 var ndHash = sjcl.hash.sha256.hash(nd);
39571 var ndHex = sjcl.codec.hex.fromBits(ndHash);
39572 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
39573 var nh = ndBstr.substring(0,l/33);
39574 return h == nh;
39575 }
39576
39577 self.toSeed = function(mnemonic, passphrase) {
39578 passphrase = passphrase || '';
39579 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
39580 var mnemonicNormalized = self.normalizeString(mnemonic);
39581 passphrase = self.normalizeString(passphrase)
39582 passphrase = "mnemonic" + passphrase;
39583 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
39584 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
39585 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
39586 var hashHex = sjcl.codec.hex.fromBits(result);
39587 return hashHex;
39588 }
39589
39590 self.splitWords = function(mnemonic) {
39591 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
39592 }
39593
39594 self.joinWords = function(words) {
39595 // Set space correctly depending on the language
39596 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
39597 var space = " ";
39598 if (language == "japanese") {
39599 space = "\u3000"; // ideographic space
39600 }
39601 return words.join(space);
39602 }
39603
39604 self.normalizeString = function(str) {
39605 if (typeof str.normalize == "function") {
39606 return str.normalize("NFKD");
39607 }
39608 else {
39609 // TODO decide how to handle this in the future.
39610 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
39611 return str;
39612 }
39613 }
39614
39615 function byteArrayToWordArray(data) {
39616 var a = [];
39617 for (var i=0; i<data.length/4; i++) {
39618 v = 0;
39619 v += data[i*4 + 0] << 8 * 3;
39620 v += data[i*4 + 1] << 8 * 2;
39621 v += data[i*4 + 2] << 8 * 1;
39622 v += data[i*4 + 3] << 8 * 0;
39623 a.push(v);
39624 }
39625 return a;
39626 }
39627
39628 function byteArrayToBinaryString(data) {
39629 var bin = "";
39630 for (var i=0; i<data.length; i++) {
39631 bin += zfill(data[i].toString(2), 8);
39632 }
39633 return bin;
39634 }
39635
39636 function hexStringToBinaryString(hexString) {
39637 binaryString = "";
39638 for (var i=0; i<hexString.length; i++) {
39639 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
39640 }
39641 return binaryString;
39642 }
39643
39644 function binaryStringToWordArray(binary) {
39645 var aLen = binary.length / 32;
39646 var a = [];
39647 for (var i=0; i<aLen; i++) {
39648 var valueStr = binary.substring(0,32);
39649 var value = parseInt(valueStr, 2);
39650 a.push(value);
39651 binary = binary.slice(32);
39652 }
39653 return a;
39654 }
39655
39656 // Pad a numeric string on the left with zero digits until the given width
39657 // is reached.
39658 // Note this differs to the python implementation because it does not
39659 // handle numbers starting with a sign.
39660 function zfill(source, length) {
39661 source = source.toString();
39662 while (source.length < length) {
39663 source = '0' + source;
39664 }
39665 return source;
39666 }
39667
39668 init();
39669
39670 }
39671 </script>
39672 <script>/*
39673 JavaScript BigInteger library version 0.9.1
39674 http://silentmatt.com/biginteger/
39675
39676 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
39677 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
39678 Licensed under the MIT license.
39679
39680 Support for arbitrary internal representation base was added by
39681 Vitaly Magerya.
39682 */
39683
39684 /*
39685 File: biginteger.js
39686
39687 Exports:
39688
39689 <BigInteger>
39690 */
39691 (function(exports) {
39692 "use strict";
39693 /*
39694 Class: BigInteger
39695 An arbitrarily-large integer.
39696
39697 <BigInteger> objects should be considered immutable. None of the "built-in"
39698 methods modify *this* or their arguments. All properties should be
39699 considered private.
39700
39701 All the methods of <BigInteger> instances can be called "statically". The
39702 static versions are convenient if you don't already have a <BigInteger>
39703 object.
39704
39705 As an example, these calls are equivalent.
39706
39707 > BigInteger(4).multiply(5); // returns BigInteger(20);
39708 > BigInteger.multiply(4, 5); // returns BigInteger(20);
39709
39710 > var a = 42;
39711 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
39712 */
39713
39714 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
39715
39716 /*
39717 Constructor: BigInteger()
39718 Convert a value to a <BigInteger>.
39719
39720 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
39721 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
39722 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
39723 without a radix argument.
39724
39725 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
39726 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
39727 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
39728 > var n3 = BigInteger(n2); // Return n2, unchanged
39729
39730 The constructor form only takes an array and a sign. *n* must be an
39731 array of numbers in little-endian order, where each digit is between 0
39732 and BigInteger.base. The second parameter sets the sign: -1 for
39733 negative, +1 for positive, or 0 for zero. The array is *not copied and
39734 may be modified*. If the array contains only zeros, the sign parameter
39735 is ignored and is forced to zero.
39736
39737 > new BigInteger([5], -1): create a new BigInteger with value -5
39738
39739 Parameters:
39740
39741 n - Value to convert to a <BigInteger>.
39742
39743 Returns:
39744
39745 A <BigInteger> value.
39746
39747 See Also:
39748
39749 <parse>, <BigInteger>
39750 */
39751 function BigInteger(n, s, token) {
39752 if (token !== CONSTRUCT) {
39753 if (n instanceof BigInteger) {
39754 return n;
39755 }
39756 else if (typeof n === "undefined") {
39757 return ZERO;
39758 }
39759 return BigInteger.parse(n);
39760 }
39761
39762 n = n || []; // Provide the nullary constructor for subclasses.
39763 while (n.length && !n[n.length - 1]) {
39764 --n.length;
39765 }
39766 this._d = n;
39767 this._s = n.length ? (s || 1) : 0;
39768 }
39769
39770 BigInteger._construct = function(n, s) {
39771 return new BigInteger(n, s, CONSTRUCT);
39772 };
39773
39774 // Base-10 speedup hacks in parse, toString, exp10 and log functions
39775 // require base to be a power of 10. 10^7 is the largest such power
39776 // that won't cause a precision loss when digits are multiplied.
39777 var BigInteger_base = 10000000;
39778 var BigInteger_base_log10 = 7;
39779
39780 BigInteger.base = BigInteger_base;
39781 BigInteger.base_log10 = BigInteger_base_log10;
39782
39783 var ZERO = new BigInteger([], 0, CONSTRUCT);
39784 // Constant: ZERO
39785 // <BigInteger> 0.
39786 BigInteger.ZERO = ZERO;
39787
39788 var ONE = new BigInteger([1], 1, CONSTRUCT);
39789 // Constant: ONE
39790 // <BigInteger> 1.
39791 BigInteger.ONE = ONE;
39792
39793 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
39794 // Constant: M_ONE
39795 // <BigInteger> -1.
39796 BigInteger.M_ONE = M_ONE;
39797
39798 // Constant: _0
39799 // Shortcut for <ZERO>.
39800 BigInteger._0 = ZERO;
39801
39802 // Constant: _1
39803 // Shortcut for <ONE>.
39804 BigInteger._1 = ONE;
39805
39806 /*
39807 Constant: small
39808 Array of <BigIntegers> from 0 to 36.
39809
39810 These are used internally for parsing, but useful when you need a "small"
39811 <BigInteger>.
39812
39813 See Also:
39814
39815 <ZERO>, <ONE>, <_0>, <_1>
39816 */
39817 BigInteger.small = [
39818 ZERO,
39819 ONE,
39820 /* Assuming BigInteger_base > 36 */
39821 new BigInteger( [2], 1, CONSTRUCT),
39822 new BigInteger( [3], 1, CONSTRUCT),
39823 new BigInteger( [4], 1, CONSTRUCT),
39824 new BigInteger( [5], 1, CONSTRUCT),
39825 new BigInteger( [6], 1, CONSTRUCT),
39826 new BigInteger( [7], 1, CONSTRUCT),
39827 new BigInteger( [8], 1, CONSTRUCT),
39828 new BigInteger( [9], 1, CONSTRUCT),
39829 new BigInteger([10], 1, CONSTRUCT),
39830 new BigInteger([11], 1, CONSTRUCT),
39831 new BigInteger([12], 1, CONSTRUCT),
39832 new BigInteger([13], 1, CONSTRUCT),
39833 new BigInteger([14], 1, CONSTRUCT),
39834 new BigInteger([15], 1, CONSTRUCT),
39835 new BigInteger([16], 1, CONSTRUCT),
39836 new BigInteger([17], 1, CONSTRUCT),
39837 new BigInteger([18], 1, CONSTRUCT),
39838 new BigInteger([19], 1, CONSTRUCT),
39839 new BigInteger([20], 1, CONSTRUCT),
39840 new BigInteger([21], 1, CONSTRUCT),
39841 new BigInteger([22], 1, CONSTRUCT),
39842 new BigInteger([23], 1, CONSTRUCT),
39843 new BigInteger([24], 1, CONSTRUCT),
39844 new BigInteger([25], 1, CONSTRUCT),
39845 new BigInteger([26], 1, CONSTRUCT),
39846 new BigInteger([27], 1, CONSTRUCT),
39847 new BigInteger([28], 1, CONSTRUCT),
39848 new BigInteger([29], 1, CONSTRUCT),
39849 new BigInteger([30], 1, CONSTRUCT),
39850 new BigInteger([31], 1, CONSTRUCT),
39851 new BigInteger([32], 1, CONSTRUCT),
39852 new BigInteger([33], 1, CONSTRUCT),
39853 new BigInteger([34], 1, CONSTRUCT),
39854 new BigInteger([35], 1, CONSTRUCT),
39855 new BigInteger([36], 1, CONSTRUCT)
39856 ];
39857
39858 // Used for parsing/radix conversion
39859 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
39860
39861 /*
39862 Method: toString
39863 Convert a <BigInteger> to a string.
39864
39865 When *base* is greater than 10, letters are upper case.
39866
39867 Parameters:
39868
39869 base - Optional base to represent the number in (default is base 10).
39870 Must be between 2 and 36 inclusive, or an Error will be thrown.
39871
39872 Returns:
39873
39874 The string representation of the <BigInteger>.
39875 */
39876 BigInteger.prototype.toString = function(base) {
39877 base = +base || 10;
39878 if (base < 2 || base > 36) {
39879 throw new Error("illegal radix " + base + ".");
39880 }
39881 if (this._s === 0) {
39882 return "0";
39883 }
39884 if (base === 10) {
39885 var str = this._s < 0 ? "-" : "";
39886 str += this._d[this._d.length - 1].toString();
39887 for (var i = this._d.length - 2; i >= 0; i--) {
39888 var group = this._d[i].toString();
39889 while (group.length < BigInteger_base_log10) group = '0' + group;
39890 str += group;
39891 }
39892 return str;
39893 }
39894 else {
39895 var numerals = BigInteger.digits;
39896 base = BigInteger.small[base];
39897 var sign = this._s;
39898
39899 var n = this.abs();
39900 var digits = [];
39901 var digit;
39902
39903 while (n._s !== 0) {
39904 var divmod = n.divRem(base);
39905 n = divmod[0];
39906 digit = divmod[1];
39907 // TODO: This could be changed to unshift instead of reversing at the end.
39908 // Benchmark both to compare speeds.
39909 digits.push(numerals[digit.valueOf()]);
39910 }
39911 return (sign < 0 ? "-" : "") + digits.reverse().join("");
39912 }
39913 };
39914
39915 // Verify strings for parsing
39916 BigInteger.radixRegex = [
39917 /^$/,
39918 /^$/,
39919 /^[01]*$/,
39920 /^[012]*$/,
39921 /^[0-3]*$/,
39922 /^[0-4]*$/,
39923 /^[0-5]*$/,
39924 /^[0-6]*$/,
39925 /^[0-7]*$/,
39926 /^[0-8]*$/,
39927 /^[0-9]*$/,
39928 /^[0-9aA]*$/,
39929 /^[0-9abAB]*$/,
39930 /^[0-9abcABC]*$/,
39931 /^[0-9a-dA-D]*$/,
39932 /^[0-9a-eA-E]*$/,
39933 /^[0-9a-fA-F]*$/,
39934 /^[0-9a-gA-G]*$/,
39935 /^[0-9a-hA-H]*$/,
39936 /^[0-9a-iA-I]*$/,
39937 /^[0-9a-jA-J]*$/,
39938 /^[0-9a-kA-K]*$/,
39939 /^[0-9a-lA-L]*$/,
39940 /^[0-9a-mA-M]*$/,
39941 /^[0-9a-nA-N]*$/,
39942 /^[0-9a-oA-O]*$/,
39943 /^[0-9a-pA-P]*$/,
39944 /^[0-9a-qA-Q]*$/,
39945 /^[0-9a-rA-R]*$/,
39946 /^[0-9a-sA-S]*$/,
39947 /^[0-9a-tA-T]*$/,
39948 /^[0-9a-uA-U]*$/,
39949 /^[0-9a-vA-V]*$/,
39950 /^[0-9a-wA-W]*$/,
39951 /^[0-9a-xA-X]*$/,
39952 /^[0-9a-yA-Y]*$/,
39953 /^[0-9a-zA-Z]*$/
39954 ];
39955
39956 /*
39957 Function: parse
39958 Parse a string into a <BigInteger>.
39959
39960 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
39961 *base* is not provided, it will be guessed based on the leading characters
39962 of *s* as follows:
39963
39964 - "0x" or "0X": *base* = 16
39965 - "0c" or "0C": *base* = 8
39966 - "0b" or "0B": *base* = 2
39967 - else: *base* = 10
39968
39969 If no base is provided, or *base* is 10, the number can be in exponential
39970 form. For example, these are all valid:
39971
39972 > BigInteger.parse("1e9"); // Same as "1000000000"
39973 > BigInteger.parse("1.234*10^3"); // Same as 1234
39974 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
39975
39976 If any characters fall outside the range defined by the radix, an exception
39977 will be thrown.
39978
39979 Parameters:
39980
39981 s - The string to parse.
39982 base - Optional radix (default is to guess based on *s*).
39983
39984 Returns:
39985
39986 a <BigInteger> instance.
39987 */
39988 BigInteger.parse = function(s, base) {
39989 // Expands a number in exponential form to decimal form.
39990 // expandExponential("-13.441*10^5") === "1344100";
39991 // expandExponential("1.12300e-1") === "0.112300";
39992 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
39993 function expandExponential(str) {
39994 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
39995
39996 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
39997 c = +c;
39998 var l = c < 0;
39999 var i = n.length + c;
40000 x = (l ? n : f).length;
40001 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
40002 var z = (new Array(c + 1)).join("0");
40003 var r = n + f;
40004 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
40005 });
40006 }
40007
40008 s = s.toString();
40009 if (typeof base === "undefined" || +base === 10) {
40010 s = expandExponential(s);
40011 }
40012
40013 var prefixRE;
40014 if (typeof base === "undefined") {
40015 prefixRE = '0[xcb]';
40016 }
40017 else if (base == 16) {
40018 prefixRE = '0x';
40019 }
40020 else if (base == 8) {
40021 prefixRE = '0c';
40022 }
40023 else if (base == 2) {
40024 prefixRE = '0b';
40025 }
40026 else {
40027 prefixRE = '';
40028 }
40029 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
40030 if (parts) {
40031 var sign = parts[1] || "+";
40032 var baseSection = parts[2] || "";
40033 var digits = parts[3] || "";
40034
40035 if (typeof base === "undefined") {
40036 // Guess base
40037 if (baseSection === "0x" || baseSection === "0X") { // Hex
40038 base = 16;
40039 }
40040 else if (baseSection === "0c" || baseSection === "0C") { // Octal
40041 base = 8;
40042 }
40043 else if (baseSection === "0b" || baseSection === "0B") { // Binary
40044 base = 2;
40045 }
40046 else {
40047 base = 10;
40048 }
40049 }
40050 else if (base < 2 || base > 36) {
40051 throw new Error("Illegal radix " + base + ".");
40052 }
40053
40054 base = +base;
40055
40056 // Check for digits outside the range
40057 if (!(BigInteger.radixRegex[base].test(digits))) {
40058 throw new Error("Bad digit for radix " + base);
40059 }
40060
40061 // Strip leading zeros, and convert to array
40062 digits = digits.replace(/^0+/, "").split("");
40063 if (digits.length === 0) {
40064 return ZERO;
40065 }
40066
40067 // Get the sign (we know it's not zero)
40068 sign = (sign === "-") ? -1 : 1;
40069
40070 // Optimize 10
40071 if (base == 10) {
40072 var d = [];
40073 while (digits.length >= BigInteger_base_log10) {
40074 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
40075 }
40076 d.push(parseInt(digits.join(''), 10));
40077 return new BigInteger(d, sign, CONSTRUCT);
40078 }
40079
40080 // Do the conversion
40081 var d = ZERO;
40082 base = BigInteger.small[base];
40083 var small = BigInteger.small;
40084 for (var i = 0; i < digits.length; i++) {
40085 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
40086 }
40087 return new BigInteger(d._d, sign, CONSTRUCT);
40088 }
40089 else {
40090 throw new Error("Invalid BigInteger format: " + s);
40091 }
40092 };
40093
40094 /*
40095 Function: add
40096 Add two <BigIntegers>.
40097
40098 Parameters:
40099
40100 n - The number to add to *this*. Will be converted to a <BigInteger>.
40101
40102 Returns:
40103
40104 The numbers added together.
40105
40106 See Also:
40107
40108 <subtract>, <multiply>, <quotient>, <next>
40109 */
40110 BigInteger.prototype.add = function(n) {
40111 if (this._s === 0) {
40112 return BigInteger(n);
40113 }
40114
40115 n = BigInteger(n);
40116 if (n._s === 0) {
40117 return this;
40118 }
40119 if (this._s !== n._s) {
40120 n = n.negate();
40121 return this.subtract(n);
40122 }
40123
40124 var a = this._d;
40125 var b = n._d;
40126 var al = a.length;
40127 var bl = b.length;
40128 var sum = new Array(Math.max(al, bl) + 1);
40129 var size = Math.min(al, bl);
40130 var carry = 0;
40131 var digit;
40132
40133 for (var i = 0; i < size; i++) {
40134 digit = a[i] + b[i] + carry;
40135 sum[i] = digit % BigInteger_base;
40136 carry = (digit / BigInteger_base) | 0;
40137 }
40138 if (bl > al) {
40139 a = b;
40140 al = bl;
40141 }
40142 for (i = size; carry && i < al; i++) {
40143 digit = a[i] + carry;
40144 sum[i] = digit % BigInteger_base;
40145 carry = (digit / BigInteger_base) | 0;
40146 }
40147 if (carry) {
40148 sum[i] = carry;
40149 }
40150
40151 for ( ; i < al; i++) {
40152 sum[i] = a[i];
40153 }
40154
40155 return new BigInteger(sum, this._s, CONSTRUCT);
40156 };
40157
40158 /*
40159 Function: negate
40160 Get the additive inverse of a <BigInteger>.
40161
40162 Returns:
40163
40164 A <BigInteger> with the same magnatude, but with the opposite sign.
40165
40166 See Also:
40167
40168 <abs>
40169 */
40170 BigInteger.prototype.negate = function() {
40171 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
40172 };
40173
40174 /*
40175 Function: abs
40176 Get the absolute value of a <BigInteger>.
40177
40178 Returns:
40179
40180 A <BigInteger> with the same magnatude, but always positive (or zero).
40181
40182 See Also:
40183
40184 <negate>
40185 */
40186 BigInteger.prototype.abs = function() {
40187 return (this._s < 0) ? this.negate() : this;
40188 };
40189
40190 /*
40191 Function: subtract
40192 Subtract two <BigIntegers>.
40193
40194 Parameters:
40195
40196 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
40197
40198 Returns:
40199
40200 The *n* subtracted from *this*.
40201
40202 See Also:
40203
40204 <add>, <multiply>, <quotient>, <prev>
40205 */
40206 BigInteger.prototype.subtract = function(n) {
40207 if (this._s === 0) {
40208 return BigInteger(n).negate();
40209 }
40210
40211 n = BigInteger(n);
40212 if (n._s === 0) {
40213 return this;
40214 }
40215 if (this._s !== n._s) {
40216 n = n.negate();
40217 return this.add(n);
40218 }
40219
40220 var m = this;
40221 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
40222 if (this._s < 0) {
40223 m = new BigInteger(n._d, 1, CONSTRUCT);
40224 n = new BigInteger(this._d, 1, CONSTRUCT);
40225 }
40226
40227 // Both are positive => a - b
40228 var sign = m.compareAbs(n);
40229 if (sign === 0) {
40230 return ZERO;
40231 }
40232 else if (sign < 0) {
40233 // swap m and n
40234 var t = n;
40235 n = m;
40236 m = t;
40237 }
40238
40239 // a > b
40240 var a = m._d;
40241 var b = n._d;
40242 var al = a.length;
40243 var bl = b.length;
40244 var diff = new Array(al); // al >= bl since a > b
40245 var borrow = 0;
40246 var i;
40247 var digit;
40248
40249 for (i = 0; i < bl; i++) {
40250 digit = a[i] - borrow - b[i];
40251 if (digit < 0) {
40252 digit += BigInteger_base;
40253 borrow = 1;
40254 }
40255 else {
40256 borrow = 0;
40257 }
40258 diff[i] = digit;
40259 }
40260 for (i = bl; i < al; i++) {
40261 digit = a[i] - borrow;
40262 if (digit < 0) {
40263 digit += BigInteger_base;
40264 }
40265 else {
40266 diff[i++] = digit;
40267 break;
40268 }
40269 diff[i] = digit;
40270 }
40271 for ( ; i < al; i++) {
40272 diff[i] = a[i];
40273 }
40274
40275 return new BigInteger(diff, sign, CONSTRUCT);
40276 };
40277
40278 (function() {
40279 function addOne(n, sign) {
40280 var a = n._d;
40281 var sum = a.slice();
40282 var carry = true;
40283 var i = 0;
40284
40285 while (true) {
40286 var digit = (a[i] || 0) + 1;
40287 sum[i] = digit % BigInteger_base;
40288 if (digit <= BigInteger_base - 1) {
40289 break;
40290 }
40291 ++i;
40292 }
40293
40294 return new BigInteger(sum, sign, CONSTRUCT);
40295 }
40296
40297 function subtractOne(n, sign) {
40298 var a = n._d;
40299 var sum = a.slice();
40300 var borrow = true;
40301 var i = 0;
40302
40303 while (true) {
40304 var digit = (a[i] || 0) - 1;
40305 if (digit < 0) {
40306 sum[i] = digit + BigInteger_base;
40307 }
40308 else {
40309 sum[i] = digit;
40310 break;
40311 }
40312 ++i;
40313 }
40314
40315 return new BigInteger(sum, sign, CONSTRUCT);
40316 }
40317
40318 /*
40319 Function: next
40320 Get the next <BigInteger> (add one).
40321
40322 Returns:
40323
40324 *this* + 1.
40325
40326 See Also:
40327
40328 <add>, <prev>
40329 */
40330 BigInteger.prototype.next = function() {
40331 switch (this._s) {
40332 case 0:
40333 return ONE;
40334 case -1:
40335 return subtractOne(this, -1);
40336 // case 1:
40337 default:
40338 return addOne(this, 1);
40339 }
40340 };
40341
40342 /*
40343 Function: prev
40344 Get the previous <BigInteger> (subtract one).
40345
40346 Returns:
40347
40348 *this* - 1.
40349
40350 See Also:
40351
40352 <next>, <subtract>
40353 */
40354 BigInteger.prototype.prev = function() {
40355 switch (this._s) {
40356 case 0:
40357 return M_ONE;
40358 case -1:
40359 return addOne(this, -1);
40360 // case 1:
40361 default:
40362 return subtractOne(this, 1);
40363 }
40364 };
40365 })();
40366
40367 /*
40368 Function: compareAbs
40369 Compare the absolute value of two <BigIntegers>.
40370
40371 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
40372
40373 Parameters:
40374
40375 n - The number to compare to *this*. Will be converted to a <BigInteger>.
40376
40377 Returns:
40378
40379 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
40380
40381 See Also:
40382
40383 <compare>, <abs>
40384 */
40385 BigInteger.prototype.compareAbs = function(n) {
40386 if (this === n) {
40387 return 0;
40388 }
40389
40390 if (!(n instanceof BigInteger)) {
40391 if (!isFinite(n)) {
40392 return(isNaN(n) ? n : -1);
40393 }
40394 n = BigInteger(n);
40395 }
40396
40397 if (this._s === 0) {
40398 return (n._s !== 0) ? -1 : 0;
40399 }
40400 if (n._s === 0) {
40401 return 1;
40402 }
40403
40404 var l = this._d.length;
40405 var nl = n._d.length;
40406 if (l < nl) {
40407 return -1;
40408 }
40409 else if (l > nl) {
40410 return 1;
40411 }
40412
40413 var a = this._d;
40414 var b = n._d;
40415 for (var i = l-1; i >= 0; i--) {
40416 if (a[i] !== b[i]) {
40417 return a[i] < b[i] ? -1 : 1;
40418 }
40419 }
40420
40421 return 0;
40422 };
40423
40424 /*
40425 Function: compare
40426 Compare two <BigIntegers>.
40427
40428 Parameters:
40429
40430 n - The number to compare to *this*. Will be converted to a <BigInteger>.
40431
40432 Returns:
40433
40434 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
40435
40436 See Also:
40437
40438 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
40439 */
40440 BigInteger.prototype.compare = function(n) {
40441 if (this === n) {
40442 return 0;
40443 }
40444
40445 n = BigInteger(n);
40446
40447 if (this._s === 0) {
40448 return -n._s;
40449 }
40450
40451 if (this._s === n._s) { // both positive or both negative
40452 var cmp = this.compareAbs(n);
40453 return cmp * this._s;
40454 }
40455 else {
40456 return this._s;
40457 }
40458 };
40459
40460 /*
40461 Function: isUnit
40462 Return true iff *this* is either 1 or -1.
40463
40464 Returns:
40465
40466 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
40467
40468 See Also:
40469
40470 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
40471 <BigInteger.ONE>, <BigInteger.M_ONE>
40472 */
40473 BigInteger.prototype.isUnit = function() {
40474 return this === ONE ||
40475 this === M_ONE ||
40476 (this._d.length === 1 && this._d[0] === 1);
40477 };
40478
40479 /*
40480 Function: multiply
40481 Multiply two <BigIntegers>.
40482
40483 Parameters:
40484
40485 n - The number to multiply *this* by. Will be converted to a
40486 <BigInteger>.
40487
40488 Returns:
40489
40490 The numbers multiplied together.
40491
40492 See Also:
40493
40494 <add>, <subtract>, <quotient>, <square>
40495 */
40496 BigInteger.prototype.multiply = function(n) {
40497 // TODO: Consider adding Karatsuba multiplication for large numbers
40498 if (this._s === 0) {
40499 return ZERO;
40500 }
40501
40502 n = BigInteger(n);
40503 if (n._s === 0) {
40504 return ZERO;
40505 }
40506 if (this.isUnit()) {
40507 if (this._s < 0) {
40508 return n.negate();
40509 }
40510 return n;
40511 }
40512 if (n.isUnit()) {
40513 if (n._s < 0) {
40514 return this.negate();
40515 }
40516 return this;
40517 }
40518 if (this === n) {
40519 return this.square();
40520 }
40521
40522 var r = (this._d.length >= n._d.length);
40523 var a = (r ? this : n)._d; // a will be longer than b
40524 var b = (r ? n : this)._d;
40525 var al = a.length;
40526 var bl = b.length;
40527
40528 var pl = al + bl;
40529 var partial = new Array(pl);
40530 var i;
40531 for (i = 0; i < pl; i++) {
40532 partial[i] = 0;
40533 }
40534
40535 for (i = 0; i < bl; i++) {
40536 var carry = 0;
40537 var bi = b[i];
40538 var jlimit = al + i;
40539 var digit;
40540 for (var j = i; j < jlimit; j++) {
40541 digit = partial[j] + bi * a[j - i] + carry;
40542 carry = (digit / BigInteger_base) | 0;
40543 partial[j] = (digit % BigInteger_base) | 0;
40544 }
40545 if (carry) {
40546 digit = partial[j] + carry;
40547 carry = (digit / BigInteger_base) | 0;
40548 partial[j] = digit % BigInteger_base;
40549 }
40550 }
40551 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
40552 };
40553
40554 // Multiply a BigInteger by a single-digit native number
40555 // Assumes that this and n are >= 0
40556 // This is not really intended to be used outside the library itself
40557 BigInteger.prototype.multiplySingleDigit = function(n) {
40558 if (n === 0 || this._s === 0) {
40559 return ZERO;
40560 }
40561 if (n === 1) {
40562 return this;
40563 }
40564
40565 var digit;
40566 if (this._d.length === 1) {
40567 digit = this._d[0] * n;
40568 if (digit >= BigInteger_base) {
40569 return new BigInteger([(digit % BigInteger_base)|0,
40570 (digit / BigInteger_base)|0], 1, CONSTRUCT);
40571 }
40572 return new BigInteger([digit], 1, CONSTRUCT);
40573 }
40574
40575 if (n === 2) {
40576 return this.add(this);
40577 }
40578 if (this.isUnit()) {
40579 return new BigInteger([n], 1, CONSTRUCT);
40580 }
40581
40582 var a = this._d;
40583 var al = a.length;
40584
40585 var pl = al + 1;
40586 var partial = new Array(pl);
40587 for (var i = 0; i < pl; i++) {
40588 partial[i] = 0;
40589 }
40590
40591 var carry = 0;
40592 for (var j = 0; j < al; j++) {
40593 digit = n * a[j] + carry;
40594 carry = (digit / BigInteger_base) | 0;
40595 partial[j] = (digit % BigInteger_base) | 0;
40596 }
40597 if (carry) {
40598 partial[j] = carry;
40599 }
40600
40601 return new BigInteger(partial, 1, CONSTRUCT);
40602 };
40603
40604 /*
40605 Function: square
40606 Multiply a <BigInteger> by itself.
40607
40608 This is slightly faster than regular multiplication, since it removes the
40609 duplicated multiplcations.
40610
40611 Returns:
40612
40613 > this.multiply(this)
40614
40615 See Also:
40616 <multiply>
40617 */
40618 BigInteger.prototype.square = function() {
40619 // Normally, squaring a 10-digit number would take 100 multiplications.
40620 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
40621 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
40622 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
40623
40624 if (this._s === 0) {
40625 return ZERO;
40626 }
40627 if (this.isUnit()) {
40628 return ONE;
40629 }
40630
40631 var digits = this._d;
40632 var length = digits.length;
40633 var imult1 = new Array(length + length + 1);
40634 var product, carry, k;
40635 var i;
40636
40637 // Calculate diagonal
40638 for (i = 0; i < length; i++) {
40639 k = i * 2;
40640 product = digits[i] * digits[i];
40641 carry = (product / BigInteger_base) | 0;
40642 imult1[k] = product % BigInteger_base;
40643 imult1[k + 1] = carry;
40644 }
40645
40646 // Calculate repeating part
40647 for (i = 0; i < length; i++) {
40648 carry = 0;
40649 k = i * 2 + 1;
40650 for (var j = i + 1; j < length; j++, k++) {
40651 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
40652 carry = (product / BigInteger_base) | 0;
40653 imult1[k] = product % BigInteger_base;
40654 }
40655 k = length + i;
40656 var digit = carry + imult1[k];
40657 carry = (digit / BigInteger_base) | 0;
40658 imult1[k] = digit % BigInteger_base;
40659 imult1[k + 1] += carry;
40660 }
40661
40662 return new BigInteger(imult1, 1, CONSTRUCT);
40663 };
40664
40665 /*
40666 Function: quotient
40667 Divide two <BigIntegers> and truncate towards zero.
40668
40669 <quotient> throws an exception if *n* is zero.
40670
40671 Parameters:
40672
40673 n - The number to divide *this* by. Will be converted to a <BigInteger>.
40674
40675 Returns:
40676
40677 The *this* / *n*, truncated to an integer.
40678
40679 See Also:
40680
40681 <add>, <subtract>, <multiply>, <divRem>, <remainder>
40682 */
40683 BigInteger.prototype.quotient = function(n) {
40684 return this.divRem(n)[0];
40685 };
40686
40687 /*
40688 Function: divide
40689 Deprecated synonym for <quotient>.
40690 */
40691 BigInteger.prototype.divide = BigInteger.prototype.quotient;
40692
40693 /*
40694 Function: remainder
40695 Calculate the remainder of two <BigIntegers>.
40696
40697 <remainder> throws an exception if *n* is zero.
40698
40699 Parameters:
40700
40701 n - The remainder after *this* is divided *this* by *n*. Will be
40702 converted to a <BigInteger>.
40703
40704 Returns:
40705
40706 *this* % *n*.
40707
40708 See Also:
40709
40710 <divRem>, <quotient>
40711 */
40712 BigInteger.prototype.remainder = function(n) {
40713 return this.divRem(n)[1];
40714 };
40715
40716 /*
40717 Function: divRem
40718 Calculate the integer quotient and remainder of two <BigIntegers>.
40719
40720 <divRem> throws an exception if *n* is zero.
40721
40722 Parameters:
40723
40724 n - The number to divide *this* by. Will be converted to a <BigInteger>.
40725
40726 Returns:
40727
40728 A two-element array containing the quotient and the remainder.
40729
40730 > a.divRem(b)
40731
40732 is exactly equivalent to
40733
40734 > [a.quotient(b), a.remainder(b)]
40735
40736 except it is faster, because they are calculated at the same time.
40737
40738 See Also:
40739
40740 <quotient>, <remainder>
40741 */
40742 BigInteger.prototype.divRem = function(n) {
40743 n = BigInteger(n);
40744 if (n._s === 0) {
40745 throw new Error("Divide by zero");
40746 }
40747 if (this._s === 0) {
40748 return [ZERO, ZERO];
40749 }
40750 if (n._d.length === 1) {
40751 return this.divRemSmall(n._s * n._d[0]);
40752 }
40753
40754 // Test for easy cases -- |n1| <= |n2|
40755 switch (this.compareAbs(n)) {
40756 case 0: // n1 == n2
40757 return [this._s === n._s ? ONE : M_ONE, ZERO];
40758 case -1: // |n1| < |n2|
40759 return [ZERO, this];
40760 }
40761
40762 var sign = this._s * n._s;
40763 var a = n.abs();
40764 var b_digits = this._d;
40765 var b_index = b_digits.length;
40766 var digits = n._d.length;
40767 var quot = [];
40768 var guess;
40769
40770 var part = new BigInteger([], 0, CONSTRUCT);
40771
40772 while (b_index) {
40773 part._d.unshift(b_digits[--b_index]);
40774 part = new BigInteger(part._d, 1, CONSTRUCT);
40775
40776 if (part.compareAbs(n) < 0) {
40777 quot.push(0);
40778 continue;
40779 }
40780 if (part._s === 0) {
40781 guess = 0;
40782 }
40783 else {
40784 var xlen = part._d.length, ylen = a._d.length;
40785 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
40786 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
40787 if (part._d.length > a._d.length) {
40788 // The length of part._d can either match a._d length,
40789 // or exceed it by one.
40790 highx = (highx+1)*BigInteger_base;
40791 }
40792 guess = Math.ceil(highx/highy);
40793 }
40794 do {
40795 var check = a.multiplySingleDigit(guess);
40796 if (check.compareAbs(part) <= 0) {
40797 break;
40798 }
40799 guess--;
40800 } while (guess);
40801
40802 quot.push(guess);
40803 if (!guess) {
40804 continue;
40805 }
40806 var diff = part.subtract(check);
40807 part._d = diff._d.slice();
40808 }
40809
40810 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
40811 new BigInteger(part._d, this._s, CONSTRUCT)];
40812 };
40813
40814 // Throws an exception if n is outside of (-BigInteger.base, -1] or
40815 // [1, BigInteger.base). It's not necessary to call this, since the
40816 // other division functions will call it if they are able to.
40817 BigInteger.prototype.divRemSmall = function(n) {
40818 var r;
40819 n = +n;
40820 if (n === 0) {
40821 throw new Error("Divide by zero");
40822 }
40823
40824 var n_s = n < 0 ? -1 : 1;
40825 var sign = this._s * n_s;
40826 n = Math.abs(n);
40827
40828 if (n < 1 || n >= BigInteger_base) {
40829 throw new Error("Argument out of range");
40830 }
40831
40832 if (this._s === 0) {
40833 return [ZERO, ZERO];
40834 }
40835
40836 if (n === 1 || n === -1) {
40837 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
40838 }
40839
40840 // 2 <= n < BigInteger_base
40841
40842 // divide a single digit by a single digit
40843 if (this._d.length === 1) {
40844 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
40845 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
40846 if (sign < 0) {
40847 q = q.negate();
40848 }
40849 if (this._s < 0) {
40850 r = r.negate();
40851 }
40852 return [q, r];
40853 }
40854
40855 var digits = this._d.slice();
40856 var quot = new Array(digits.length);
40857 var part = 0;
40858 var diff = 0;
40859 var i = 0;
40860 var guess;
40861
40862 while (digits.length) {
40863 part = part * BigInteger_base + digits[digits.length - 1];
40864 if (part < n) {
40865 quot[i++] = 0;
40866 digits.pop();
40867 diff = BigInteger_base * diff + part;
40868 continue;
40869 }
40870 if (part === 0) {
40871 guess = 0;
40872 }
40873 else {
40874 guess = (part / n) | 0;
40875 }
40876
40877 var check = n * guess;
40878 diff = part - check;
40879 quot[i++] = guess;
40880 if (!guess) {
40881 digits.pop();
40882 continue;
40883 }
40884
40885 digits.pop();
40886 part = diff;
40887 }
40888
40889 r = new BigInteger([diff], 1, CONSTRUCT);
40890 if (this._s < 0) {
40891 r = r.negate();
40892 }
40893 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
40894 };
40895
40896 /*
40897 Function: isEven
40898 Return true iff *this* is divisible by two.
40899
40900 Note that <BigInteger.ZERO> is even.
40901
40902 Returns:
40903
40904 true if *this* is even, false otherwise.
40905
40906 See Also:
40907
40908 <isOdd>
40909 */
40910 BigInteger.prototype.isEven = function() {
40911 var digits = this._d;
40912 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
40913 };
40914
40915 /*
40916 Function: isOdd
40917 Return true iff *this* is not divisible by two.
40918
40919 Returns:
40920
40921 true if *this* is odd, false otherwise.
40922
40923 See Also:
40924
40925 <isEven>
40926 */
40927 BigInteger.prototype.isOdd = function() {
40928 return !this.isEven();
40929 };
40930
40931 /*
40932 Function: sign
40933 Get the sign of a <BigInteger>.
40934
40935 Returns:
40936
40937 * -1 if *this* < 0
40938 * 0 if *this* == 0
40939 * +1 if *this* > 0
40940
40941 See Also:
40942
40943 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
40944 */
40945 BigInteger.prototype.sign = function() {
40946 return this._s;
40947 };
40948
40949 /*
40950 Function: isPositive
40951 Return true iff *this* > 0.
40952
40953 Returns:
40954
40955 true if *this*.compare(<BigInteger.ZERO>) == 1.
40956
40957 See Also:
40958
40959 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
40960 */
40961 BigInteger.prototype.isPositive = function() {
40962 return this._s > 0;
40963 };
40964
40965 /*
40966 Function: isNegative
40967 Return true iff *this* < 0.
40968
40969 Returns:
40970
40971 true if *this*.compare(<BigInteger.ZERO>) == -1.
40972
40973 See Also:
40974
40975 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
40976 */
40977 BigInteger.prototype.isNegative = function() {
40978 return this._s < 0;
40979 };
40980
40981 /*
40982 Function: isZero
40983 Return true iff *this* == 0.
40984
40985 Returns:
40986
40987 true if *this*.compare(<BigInteger.ZERO>) == 0.
40988
40989 See Also:
40990
40991 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
40992 */
40993 BigInteger.prototype.isZero = function() {
40994 return this._s === 0;
40995 };
40996
40997 /*
40998 Function: exp10
40999 Multiply a <BigInteger> by a power of 10.
41000
41001 This is equivalent to, but faster than
41002
41003 > if (n >= 0) {
41004 > return this.multiply(BigInteger("1e" + n));
41005 > }
41006 > else { // n <= 0
41007 > return this.quotient(BigInteger("1e" + -n));
41008 > }
41009
41010 Parameters:
41011
41012 n - The power of 10 to multiply *this* by. *n* is converted to a
41013 javascipt number and must be no greater than <BigInteger.MAX_EXP>
41014 (0x7FFFFFFF), or an exception will be thrown.
41015
41016 Returns:
41017
41018 *this* * (10 ** *n*), truncated to an integer if necessary.
41019
41020 See Also:
41021
41022 <pow>, <multiply>
41023 */
41024 BigInteger.prototype.exp10 = function(n) {
41025 n = +n;
41026 if (n === 0) {
41027 return this;
41028 }
41029 if (Math.abs(n) > Number(MAX_EXP)) {
41030 throw new Error("exponent too large in BigInteger.exp10");
41031 }
41032 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
41033 if (this._s === 0) {
41034 return ZERO;
41035 }
41036 if (n > 0) {
41037 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
41038
41039 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
41040 k._d.unshift(0);
41041 }
41042 if (n == 0)
41043 return k;
41044 k._s = 1;
41045 k = k.multiplySingleDigit(Math.pow(10, n));
41046 return (this._s < 0 ? k.negate() : k);
41047 } else if (-n >= this._d.length*BigInteger_base_log10) {
41048 return ZERO;
41049 } else {
41050 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
41051
41052 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
41053 k._d.shift();
41054 }
41055 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
41056 }
41057 };
41058
41059 /*
41060 Function: pow
41061 Raise a <BigInteger> to a power.
41062
41063 In this implementation, 0**0 is 1.
41064
41065 Parameters:
41066
41067 n - The exponent to raise *this* by. *n* must be no greater than
41068 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
41069
41070 Returns:
41071
41072 *this* raised to the *nth* power.
41073
41074 See Also:
41075
41076 <modPow>
41077 */
41078 BigInteger.prototype.pow = function(n) {
41079 if (this.isUnit()) {
41080 if (this._s > 0) {
41081 return this;
41082 }
41083 else {
41084 return BigInteger(n).isOdd() ? this : this.negate();
41085 }
41086 }
41087
41088 n = BigInteger(n);
41089 if (n._s === 0) {
41090 return ONE;
41091 }
41092 else if (n._s < 0) {
41093 if (this._s === 0) {
41094 throw new Error("Divide by zero");
41095 }
41096 else {
41097 return ZERO;
41098 }
41099 }
41100 if (this._s === 0) {
41101 return ZERO;
41102 }
41103 if (n.isUnit()) {
41104 return this;
41105 }
41106
41107 if (n.compareAbs(MAX_EXP) > 0) {
41108 throw new Error("exponent too large in BigInteger.pow");
41109 }
41110 var x = this;
41111 var aux = ONE;
41112 var two = BigInteger.small[2];
41113
41114 while (n.isPositive()) {
41115 if (n.isOdd()) {
41116 aux = aux.multiply(x);
41117 if (n.isUnit()) {
41118 return aux;
41119 }
41120 }
41121 x = x.square();
41122 n = n.quotient(two);
41123 }
41124
41125 return aux;
41126 };
41127
41128 /*
41129 Function: modPow
41130 Raise a <BigInteger> to a power (mod m).
41131
41132 Because it is reduced by a modulus, <modPow> is not limited by
41133 <BigInteger.MAX_EXP> like <pow>.
41134
41135 Parameters:
41136
41137 exponent - The exponent to raise *this* by. Must be positive.
41138 modulus - The modulus.
41139
41140 Returns:
41141
41142 *this* ^ *exponent* (mod *modulus*).
41143
41144 See Also:
41145
41146 <pow>, <mod>
41147 */
41148 BigInteger.prototype.modPow = function(exponent, modulus) {
41149 var result = ONE;
41150 var base = this;
41151
41152 while (exponent.isPositive()) {
41153 if (exponent.isOdd()) {
41154 result = result.multiply(base).remainder(modulus);
41155 }
41156
41157 exponent = exponent.quotient(BigInteger.small[2]);
41158 if (exponent.isPositive()) {
41159 base = base.square().remainder(modulus);
41160 }
41161 }
41162
41163 return result;
41164 };
41165
41166 /*
41167 Function: log
41168 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
41169
41170 This is equivalent to
41171
41172 > Math.log(this.toJSValue())
41173
41174 but handles values outside of the native number range.
41175
41176 Returns:
41177
41178 log( *this* )
41179
41180 See Also:
41181
41182 <toJSValue>
41183 */
41184 BigInteger.prototype.log = function() {
41185 switch (this._s) {
41186 case 0: return -Infinity;
41187 case -1: return NaN;
41188 default: // Fall through.
41189 }
41190
41191 var l = this._d.length;
41192
41193 if (l*BigInteger_base_log10 < 30) {
41194 return Math.log(this.valueOf());
41195 }
41196
41197 var N = Math.ceil(30/BigInteger_base_log10);
41198 var firstNdigits = this._d.slice(l - N);
41199 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
41200 };
41201
41202 /*
41203 Function: valueOf
41204 Convert a <BigInteger> to a native JavaScript integer.
41205
41206 This is called automatically by JavaScipt to convert a <BigInteger> to a
41207 native value.
41208
41209 Returns:
41210
41211 > parseInt(this.toString(), 10)
41212
41213 See Also:
41214
41215 <toString>, <toJSValue>
41216 */
41217 BigInteger.prototype.valueOf = function() {
41218 return parseInt(this.toString(), 10);
41219 };
41220
41221 /*
41222 Function: toJSValue
41223 Convert a <BigInteger> to a native JavaScript integer.
41224
41225 This is the same as valueOf, but more explicitly named.
41226
41227 Returns:
41228
41229 > parseInt(this.toString(), 10)
41230
41231 See Also:
41232
41233 <toString>, <valueOf>
41234 */
41235 BigInteger.prototype.toJSValue = function() {
41236 return parseInt(this.toString(), 10);
41237 };
41238
41239 var MAX_EXP = BigInteger(0x7FFFFFFF);
41240 // Constant: MAX_EXP
41241 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
41242 BigInteger.MAX_EXP = MAX_EXP;
41243
41244 (function() {
41245 function makeUnary(fn) {
41246 return function(a) {
41247 return fn.call(BigInteger(a));
41248 };
41249 }
41250
41251 function makeBinary(fn) {
41252 return function(a, b) {
41253 return fn.call(BigInteger(a), BigInteger(b));
41254 };
41255 }
41256
41257 function makeTrinary(fn) {
41258 return function(a, b, c) {
41259 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
41260 };
41261 }
41262
41263 (function() {
41264 var i, fn;
41265 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
41266 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
41267 var trinary = ["modPow"];
41268
41269 for (i = 0; i < unary.length; i++) {
41270 fn = unary[i];
41271 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
41272 }
41273
41274 for (i = 0; i < binary.length; i++) {
41275 fn = binary[i];
41276 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
41277 }
41278
41279 for (i = 0; i < trinary.length; i++) {
41280 fn = trinary[i];
41281 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
41282 }
41283
41284 BigInteger.exp10 = function(x, n) {
41285 return BigInteger(x).exp10(n);
41286 };
41287 })();
41288 })();
41289
41290 exports.BigInteger = BigInteger;
41291 })(typeof exports !== 'undefined' ? exports : this);
41292 </script>
41293 <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){
41294 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;
41295
41296 },{}],2:[function(require,module,exports){
41297 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;
41298
41299 },{"./scoring":6}],3:[function(require,module,exports){
41300 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(","),
41301 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(","),
41302 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(","),
41303 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(","),
41304 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;
41305
41306 },{}],4:[function(require,module,exports){
41307 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;
41308
41309 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
41310 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;
41311
41312 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
41313 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;
41314
41315 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
41316 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;
41317
41318 },{}]},{},[4])(4)
41319 });
41320 //# sourceMappingURL=zxcvbn.js.map
41321 </script>
41322 <script>/*
41323 * Detects entropy from a string.
41324 *
41325 * Formats include:
41326 * binary [0-1]
41327 * base 6 [0-5]
41328 * dice 6 [1-6]
41329 * decimal [0-9]
41330 * hexadecimal [0-9A-F]
41331 * card [A2-9TJQK][CDHS]
41332 *
41333 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
41334 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
41335 * entropy.
41336 */
41337
41338 window.Entropy = new (function() {
41339
41340 var TWO = new BigInteger(2);
41341
41342 // matchers returns an array of the matched events for each type of entropy.
41343 // eg
41344 // matchers.binary("010") returns ["0", "1", "0"]
41345 // matchers.binary("a10") returns ["1", "0"]
41346 // matchers.hex("a10") returns ["a", "1", "0"]
41347 var matchers = {
41348 binary: function(str) {
41349 return str.match(/[0-1]/gi) || [];
41350 },
41351 base6: function(str) {
41352 return str.match(/[0-5]/gi) || [];
41353 },
41354 dice: function(str) {
41355 return str.match(/[1-6]/gi) || []; // ie dice numbers
41356 },
41357 base10: function(str) {
41358 return str.match(/[0-9]/gi) || [];
41359 },
41360 hex: function(str) {
41361 return str.match(/[0-9A-F]/gi) || [];
41362 },
41363 card: function(str) {
41364 // Format is NumberSuit, eg
41365 // AH ace of hearts
41366 // 8C eight of clubs
41367 // TD ten of diamonds
41368 // JS jack of spades
41369 // QH queen of hearts
41370 // KC king of clubs
41371 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
41372 }
41373 }
41374
41375 // Convert array of cards from ["ac", "4d", "ks"]
41376 // to numbers between 0 and 51 [0, 16, 51]
41377 function convertCardsToInts(cards) {
41378 var ints = [];
41379 var values = "a23456789tjqk";
41380 var suits = "cdhs";
41381 for (var i=0; i<cards.length; i++) {
41382 var card = cards[i].toLowerCase();
41383 var value = card[0];
41384 var suit = card[1];
41385 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
41386 ints.push(asInt);
41387 }
41388 return ints;
41389 }
41390
41391 this.fromString = function(rawEntropyStr) {
41392 // Find type of entropy being used (binary, hex, dice etc)
41393 var base = getBase(rawEntropyStr);
41394 // Convert dice to base6 entropy (ie 1-6 to 0-5)
41395 // This is done by changing all 6s to 0s
41396 if (base.str == "dice") {
41397 var newParts = [];
41398 var newInts = [];
41399 for (var i=0; i<base.parts.length; i++) {
41400 var c = base.parts[i];
41401 if ("12345".indexOf(c) > -1) {
41402 newParts[i] = base.parts[i];
41403 newInts[i] = base.ints[i];
41404 }
41405 else {
41406 newParts[i] = "0";
41407 newInts[i] = 0;
41408 }
41409 }
41410 base.str = "base 6 (dice)";
41411 base.ints = newInts;
41412 base.parts = newParts;
41413 base.matcher = matchers.base6;
41414 }
41415 // Detect empty entropy
41416 if (base.parts.length == 0) {
41417 return {
41418 binaryStr: "",
41419 cleanStr: "",
41420 cleanHtml: "",
41421 base: base,
41422 };
41423 }
41424 // Convert base.ints to BigInteger.
41425 // Due to using unusual bases, eg cards of base52, this is not as simple as
41426 // using BigInteger.parse()
41427 var entropyInt = BigInteger.ZERO;
41428 for (var i=base.ints.length-1; i>=0; i--) {
41429 var thisInt = BigInteger.parse(base.ints[i]);
41430 var power = (base.ints.length - 1) - i;
41431 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
41432 entropyInt = entropyInt.add(additionalEntropy);
41433 }
41434 // Convert entropy to binary
41435 var entropyBin = entropyInt.toString(2);
41436 // If the first integer is small, it must be padded with zeros.
41437 // Otherwise the chance of the first bit being 1 is 100%, which is
41438 // obviously incorrect.
41439 // This is not perfect for non-2^n bases.
41440 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
41441 while (entropyBin.length < expectedBits) {
41442 entropyBin = "0" + entropyBin;
41443 }
41444 // Calculate the number of bits per event
41445 var bitsPerEvent = Math.log2(base.asInt);
41446 // Cards binary must be handled differently, since they're not replaced
41447 if (base.asInt == 52) {
41448 var cardEntropy = processCardEntropy(base.parts);
41449 entropyBin = cardEntropy.binaryStr;
41450 bitsPerEvent = cardEntropy.bitsPerEvent;
41451 }
41452 // Supply a 'filtered' entropy string for display purposes
41453 var entropyClean = base.parts.join("");
41454 var entropyHtml = base.parts.join("");
41455 if (base.asInt == 52) {
41456 entropyClean = base.parts.join(" ").toUpperCase();
41457 entropyClean = entropyClean.replace(/C/g, "\u2663");
41458 entropyClean = entropyClean.replace(/D/g, "\u2666");
41459 entropyClean = entropyClean.replace(/H/g, "\u2665");
41460 entropyClean = entropyClean.replace(/S/g, "\u2660");
41461 entropyHtml = base.parts.join(" ").toUpperCase();
41462 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
41463 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
41464 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
41465 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
41466 }
41467 // Return the result
41468 var e = {
41469 binaryStr: entropyBin,
41470 cleanStr: entropyClean,
41471 cleanHtml: entropyHtml,
41472 bitsPerEvent: bitsPerEvent,
41473 base: base,
41474 }
41475 return e;
41476 }
41477
41478 function getSortedDeck() {
41479 var s = [];
41480 var suits = "CDHS";
41481 var values = "A23456789TJQK";
41482 for (var i=0; i<suits.length; i++) {
41483 for (var j=0; j<values.length; j++) {
41484 s.push(values[j]+suits[i]);
41485 }
41486 }
41487 return s;
41488 }
41489
41490 function getBase(str) {
41491 // Need to get the lowest base for the supplied entropy.
41492 // This prevents interpreting, say, dice rolls as hexadecimal.
41493 var binaryMatches = matchers.binary(str);
41494 var hexMatches = matchers.hex(str);
41495 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
41496 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
41497 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
41498 return {
41499 ints: ints,
41500 parts: binaryMatches,
41501 matcher: matchers.binary,
41502 asInt: 2,
41503 str: "binary",
41504 }
41505 }
41506 var cardMatches = matchers.card(str);
41507 if (cardMatches.length >= hexMatches.length / 2) {
41508 var ints = convertCardsToInts(cardMatches);
41509 return {
41510 ints: ints,
41511 parts: cardMatches,
41512 matcher: matchers.card,
41513 asInt: 52,
41514 str: "card",
41515 }
41516 }
41517 var diceMatches = matchers.dice(str);
41518 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
41519 var ints = diceMatches.map(function(i) { return parseInt(i) });
41520 return {
41521 ints: ints,
41522 parts: diceMatches,
41523 matcher: matchers.dice,
41524 asInt: 6,
41525 str: "dice",
41526 }
41527 }
41528 var base6Matches = matchers.base6(str);
41529 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
41530 var ints = base6Matches.map(function(i) { return parseInt(i) });
41531 return {
41532 ints: ints,
41533 parts: base6Matches,
41534 matcher: matchers.base6,
41535 asInt: 6,
41536 str: "base 6",
41537 }
41538 }
41539 var base10Matches = matchers.base10(str);
41540 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
41541 var ints = base10Matches.map(function(i) { return parseInt(i) });
41542 return {
41543 ints: ints,
41544 parts: base10Matches,
41545 matcher: matchers.base10,
41546 asInt: 10,
41547 str: "base 10",
41548 }
41549 }
41550 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
41551 return {
41552 ints: ints,
41553 parts: hexMatches,
41554 matcher: matchers.hex,
41555 asInt: 16,
41556 str: "hexadecimal",
41557 }
41558 }
41559
41560 // Assume cards are NOT replaced.
41561 // Additional entropy decreases as more cards are used. This means
41562 // total possible entropy is measured using n!, not base^n.
41563 // eg the second last card can be only one of two, not one of fifty two
41564 // so the added entropy for that card is only one bit at most
41565 function processCardEntropy(cards) {
41566 // Track how many instances of each card have been used, and thus
41567 // how many decks are in use.
41568 var cardCounts = {};
41569 var numberOfDecks = 0;
41570 // Work out number of decks by max(duplicates)
41571 for (var i=0; i<cards.length; i++) {
41572 // Get the card that was drawn
41573 var cardLower = cards[i];
41574 var card = cardLower.toUpperCase();
41575 // Initialize the count for this card if needed
41576 if (!(card in cardCounts)) {
41577 cardCounts[card] = 0;
41578 }
41579 cardCounts[card] += 1;
41580 // See if this is max(duplicates)
41581 if (cardCounts[card] > numberOfDecks) {
41582 numberOfDecks = cardCounts[card];
41583 }
41584 }
41585 // Work out the total number of bits for this many decks
41586 // See http://crypto.stackexchange.com/q/41886
41587 var gainedBits = 0;
41588 // Equivalent of Math.log2(factorial(52*numberOfDecks))
41589 // which becomes infinity for numberOfDecks > 4
41590 for (var i=1; i<=52*numberOfDecks; i++) {
41591 gainedBits = gainedBits + Math.log2(i);
41592 }
41593 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
41594 var maxBits = gainedBits - lostBits;
41595 // Convert the drawn cards to a binary representation.
41596 // The exact technique for doing this is unclear.
41597 // See
41598 // http://crypto.stackexchange.com/a/41896
41599 // "I even doubt that this is well defined (only the average entropy
41600 // is, I believe)."
41601 // See
41602 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
41603 // "The binary representation can be the first log(permutations,2) bits
41604 // of the sha-2 hash of the normalized deck string."
41605 //
41606 // In this specific implementation, the first N bits of the hash of the
41607 // normalized cards string is being used. Uppercase, no spaces; eg
41608 // sha256("AH8DQSTC2H")
41609 var totalCards = numberOfDecks * 52;
41610 var percentUsed = cards.length / totalCards;
41611 // Calculate the average number of bits of entropy for the number of
41612 // cards drawn.
41613 var numberOfBits = Math.floor(maxBits * percentUsed);
41614 // Create a normalized string of the selected cards
41615 var normalizedCards = cards.join("").toUpperCase();
41616 // Convert to binary using the SHA256 hash of the normalized cards.
41617 // If the number of bits is more than 256, multiple hashes
41618 // are used until the required number of bits is reached.
41619 var entropyBin = "";
41620 var iterations = 0;
41621 while (entropyBin.length < numberOfBits) {
41622 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
41623 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
41624 for (var i=0; i<hashHex.length; i++) {
41625 var decimal = parseInt(hashHex[i], 16);
41626 var binary = decimal.toString(2);
41627 while (binary.length < 4) {
41628 binary = "0" + binary;
41629 }
41630 entropyBin = entropyBin + binary;
41631 }
41632 iterations = iterations + 1;
41633 }
41634 // Truncate to the appropriate number of bits.
41635 entropyBin = entropyBin.substring(0, numberOfBits);
41636 // Get the number of bits per event
41637 bitsPerEvent = maxBits / totalCards;
41638 return {
41639 binaryStr: entropyBin,
41640 bitsPerEvent: bitsPerEvent,
41641 }
41642 }
41643
41644 // Polyfill for Math.log2
41645 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
41646 Math.log2 = Math.log2 || function(x) {
41647 // The polyfill isn't good enough because of the poor accuracy of
41648 // Math.LOG2E
41649 // log2(8) gave 2.9999999999999996 which when floored causes issues.
41650 // So instead use the BigInteger library to get it right.
41651 return BigInteger.log(x) / BigInteger.log(2);
41652 };
41653
41654 // Depends on BigInteger
41655 function factorial(n) {
41656 if (n == 0) {
41657 return 1;
41658 }
41659 f = BigInteger.ONE;
41660 for (var i=1; i<=n; i++) {
41661 f = f.multiply(new BigInteger(i));
41662 }
41663 return f;
41664 }
41665
41666 })();
41667 </script>
41668 <script>(function() {
41669
41670 // mnemonics is populated as required by getLanguage
41671 var mnemonics = { "english": new Mnemonic("english") };
41672 var mnemonic = mnemonics["english"];
41673 var seed = null;
41674 var bip32RootKey = null;
41675 var bip32ExtendedKey = null;
41676 var network = bitcoin.networks.bitcoin;
41677 var addressRowTemplate = $("#address-row-template");
41678
41679 var showIndex = true;
41680 var showAddress = true;
41681 var showPubKey = true;
41682 var showPrivKey = true;
41683 var showQr = false;
41684
41685 var entropyChangeTimeoutEvent = null;
41686 var phraseChangeTimeoutEvent = null;
41687 var rootKeyChangedTimeoutEvent = null;
41688
41689 var generationProcesses = [];
41690
41691 var DOM = {};
41692 DOM.network = $(".network");
41693 DOM.bip32Client = $("#bip32-client");
41694 DOM.phraseNetwork = $("#network-phrase");
41695 DOM.useEntropy = $(".use-entropy");
41696 DOM.entropyContainer = $(".entropy-container");
41697 DOM.entropy = $(".entropy");
41698 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
41699 DOM.entropyType = DOM.entropyContainer.find(".type");
41700 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
41701 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
41702 DOM.entropyBits = DOM.entropyContainer.find(".bits");
41703 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
41704 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
41705 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
41706 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
41707 DOM.phrase = $(".phrase");
41708 DOM.passphrase = $(".passphrase");
41709 DOM.generateContainer = $(".generate-container");
41710 DOM.generate = $(".generate");
41711 DOM.seed = $(".seed");
41712 DOM.rootKey = $(".root-key");
41713 DOM.extendedPrivKey = $(".extended-priv-key");
41714 DOM.extendedPubKey = $(".extended-pub-key");
41715 DOM.bip32tab = $("#bip32-tab");
41716 DOM.bip44tab = $("#bip44-tab");
41717 DOM.bip32panel = $("#bip32");
41718 DOM.bip44panel = $("#bip44");
41719 DOM.bip32path = $("#bip32-path");
41720 DOM.bip44path = $("#bip44-path");
41721 DOM.bip44purpose = $("#bip44 .purpose");
41722 DOM.bip44coin = $("#bip44 .coin");
41723 DOM.bip44account = $("#bip44 .account");
41724 DOM.bip44accountXprv = $("#bip44 .account-xprv");
41725 DOM.bip44accountXpub = $("#bip44 .account-xpub");
41726 DOM.bip44change = $("#bip44 .change");
41727 DOM.generatedStrength = $(".generate-container .strength");
41728 DOM.hardenedAddresses = $(".hardened-addresses");
41729 DOM.addresses = $(".addresses");
41730 DOM.rowsToAdd = $(".rows-to-add");
41731 DOM.more = $(".more");
41732 DOM.feedback = $(".feedback");
41733 DOM.tab = $(".derivation-type a");
41734 DOM.indexToggle = $(".index-toggle");
41735 DOM.addressToggle = $(".address-toggle");
41736 DOM.publicKeyToggle = $(".public-key-toggle");
41737 DOM.privateKeyToggle = $(".private-key-toggle");
41738 DOM.languages = $(".languages a");
41739 DOM.qrContainer = $(".qr-container");
41740 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
41741 DOM.qrImage = DOM.qrContainer.find(".qr-image");
41742 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
41743 DOM.showQrEls = $("[data-show-qr]");
41744
41745 function init() {
41746 // Events
41747 DOM.network.on("change", networkChanged);
41748 DOM.bip32Client.on("change", bip32ClientChanged);
41749 DOM.useEntropy.on("change", setEntropyVisibility);
41750 DOM.entropy.on("input", delayedEntropyChanged);
41751 DOM.entropyMnemonicLength.on("change", entropyChanged);
41752 DOM.phrase.on("input", delayedPhraseChanged);
41753 DOM.passphrase.on("input", delayedPhraseChanged);
41754 DOM.generate.on("click", generateClicked);
41755 DOM.more.on("click", showMore);
41756 DOM.rootKey.on("input", delayedRootKeyChanged);
41757 DOM.bip32path.on("input", calcForDerivationPath);
41758 DOM.bip44purpose.on("input", calcForDerivationPath);
41759 DOM.bip44coin.on("input", calcForDerivationPath);
41760 DOM.bip44account.on("input", calcForDerivationPath);
41761 DOM.bip44change.on("input", calcForDerivationPath);
41762 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
41763 DOM.hardenedAddresses.on("change", calcForDerivationPath);
41764 DOM.indexToggle.on("click", toggleIndexes);
41765 DOM.addressToggle.on("click", toggleAddresses);
41766 DOM.publicKeyToggle.on("click", togglePublicKeys);
41767 DOM.privateKeyToggle.on("click", togglePrivateKeys);
41768 DOM.languages.on("click", languageChanged);
41769 setQrEvents(DOM.showQrEls);
41770 disableForms();
41771 hidePending();
41772 hideValidationError();
41773 populateNetworkSelect();
41774 populateClientSelect();
41775 }
41776
41777 // Event handlers
41778
41779 function networkChanged(e) {
41780 var networkIndex = e.target.value;
41781 networks[networkIndex].onSelect();
41782 if (seed != null) {
41783 phraseChanged();
41784 }
41785 else {
41786 rootKeyChanged();
41787 }
41788 }
41789
41790 function bip32ClientChanged(e) {
41791 var clientIndex = DOM.bip32Client.val();
41792 if (clientIndex == "custom") {
41793 DOM.bip32path.prop("readonly", false);
41794 }
41795 else {
41796 DOM.bip32path.prop("readonly", true);
41797 clients[clientIndex].onSelect();
41798 if (seed != null) {
41799 phraseChanged();
41800 }
41801 else {
41802 rootKeyChanged();
41803 }
41804 }
41805 }
41806
41807 function setEntropyVisibility() {
41808 if (isUsingOwnEntropy()) {
41809 DOM.entropyContainer.removeClass("hidden");
41810 DOM.generateContainer.addClass("hidden");
41811 DOM.phrase.prop("readonly", true);
41812 DOM.entropy.focus();
41813 entropyChanged();
41814 }
41815 else {
41816 DOM.entropyContainer.addClass("hidden");
41817 DOM.generateContainer.removeClass("hidden");
41818 DOM.phrase.prop("readonly", false);
41819 hidePending();
41820 }
41821 }
41822
41823 function delayedPhraseChanged() {
41824 hideValidationError();
41825 showPending();
41826 if (phraseChangeTimeoutEvent != null) {
41827 clearTimeout(phraseChangeTimeoutEvent);
41828 }
41829 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
41830 }
41831
41832 function phraseChanged() {
41833 showPending();
41834 hideValidationError();
41835 setMnemonicLanguage();
41836 // Get the mnemonic phrase
41837 var phrase = DOM.phrase.val();
41838 var errorText = findPhraseErrors(phrase);
41839 if (errorText) {
41840 showValidationError(errorText);
41841 return;
41842 }
41843 // Calculate and display
41844 var passphrase = DOM.passphrase.val();
41845 calcBip32RootKeyFromSeed(phrase, passphrase);
41846 calcForDerivationPath();
41847 hidePending();
41848 }
41849
41850 function delayedEntropyChanged() {
41851 hideValidationError();
41852 showPending();
41853 if (entropyChangeTimeoutEvent != null) {
41854 clearTimeout(entropyChangeTimeoutEvent);
41855 }
41856 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
41857 }
41858
41859 function entropyChanged() {
41860 // If blank entropy, clear mnemonic, addresses, errors
41861 if (DOM.entropy.val().trim().length == 0) {
41862 clearDisplay();
41863 clearEntropyFeedback();
41864 DOM.phrase.val("");
41865 showValidationError("Blank entropy");
41866 return;
41867 }
41868 // Get the current phrase to detect changes
41869 var phrase = DOM.phrase.val();
41870 // Set the phrase from the entropy
41871 setMnemonicFromEntropy();
41872 // Recalc addresses if the phrase has changed
41873 var newPhrase = DOM.phrase.val();
41874 if (newPhrase != phrase) {
41875 if (newPhrase.length == 0) {
41876 clearDisplay();
41877 }
41878 else {
41879 phraseChanged();
41880 }
41881 }
41882 else {
41883 hidePending();
41884 }
41885 }
41886
41887 function delayedRootKeyChanged() {
41888 // Warn if there is an existing mnemonic or passphrase.
41889 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
41890 if (!confirm("This will clear existing mnemonic and passphrase")) {
41891 DOM.rootKey.val(bip32RootKey);
41892 return
41893 }
41894 }
41895 hideValidationError();
41896 showPending();
41897 // Clear existing mnemonic and passphrase
41898 DOM.phrase.val("");
41899 DOM.passphrase.val("");
41900 seed = null;
41901 if (rootKeyChangedTimeoutEvent != null) {
41902 clearTimeout(rootKeyChangedTimeoutEvent);
41903 }
41904 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
41905 }
41906
41907 function rootKeyChanged() {
41908 showPending();
41909 hideValidationError();
41910 // Validate the root key TODO
41911 var rootKeyBase58 = DOM.rootKey.val();
41912 var errorText = validateRootKey(rootKeyBase58);
41913 if (errorText) {
41914 showValidationError(errorText);
41915 return;
41916 }
41917 // Calculate and display
41918 calcBip32RootKeyFromBase58(rootKeyBase58);
41919 calcForDerivationPath();
41920 }
41921
41922 function calcForDerivationPath() {
41923 showPending();
41924 clearAddressesList();
41925 hideValidationError();
41926 // Get the derivation path
41927 var derivationPath = getDerivationPath();
41928 var errorText = findDerivationPathErrors(derivationPath);
41929 if (errorText) {
41930 showValidationError(errorText);
41931 return;
41932 }
41933 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
41934 if (bip44TabSelected()) {
41935 displayBip44Info();
41936 }
41937 displayBip32Info();
41938 hidePending();
41939 }
41940
41941 function generateClicked() {
41942 if (isUsingOwnEntropy()) {
41943 return;
41944 }
41945 clearDisplay();
41946 showPending();
41947 setTimeout(function() {
41948 setMnemonicLanguage();
41949 var phrase = generateRandomPhrase();
41950 if (!phrase) {
41951 return;
41952 }
41953 phraseChanged();
41954 }, 50);
41955 }
41956
41957 function languageChanged() {
41958 setTimeout(function() {
41959 setMnemonicLanguage();
41960 if (DOM.phrase.val().length > 0) {
41961 var newPhrase = convertPhraseToNewLanguage();
41962 DOM.phrase.val(newPhrase);
41963 phraseChanged();
41964 }
41965 else {
41966 DOM.generate.trigger("click");
41967 }
41968 }, 50);
41969 }
41970
41971 function toggleIndexes() {
41972 showIndex = !showIndex;
41973 $("td.index span").toggleClass("invisible");
41974 }
41975
41976 function toggleAddresses() {
41977 showAddress = !showAddress;
41978 $("td.address span").toggleClass("invisible");
41979 }
41980
41981 function togglePublicKeys() {
41982 showPubKey = !showPubKey;
41983 $("td.pubkey span").toggleClass("invisible");
41984 }
41985
41986 function togglePrivateKeys() {
41987 showPrivKey = !showPrivKey;
41988 $("td.privkey span").toggleClass("invisible");
41989 }
41990
41991 // Private methods
41992
41993 function generateRandomPhrase() {
41994 if (!hasStrongRandom()) {
41995 var errorText = "This browser does not support strong randomness";
41996 showValidationError(errorText);
41997 return;
41998 }
41999 var numWords = parseInt(DOM.generatedStrength.val());
42000 var strength = numWords / 3 * 32;
42001 var words = mnemonic.generate(strength);
42002 DOM.phrase.val(words);
42003 return words;
42004 }
42005
42006 function calcBip32RootKeyFromSeed(phrase, passphrase) {
42007 seed = mnemonic.toSeed(phrase, passphrase);
42008 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
42009 }
42010
42011 function calcBip32RootKeyFromBase58(rootKeyBase58) {
42012 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
42013 }
42014
42015 function calcBip32ExtendedKey(path) {
42016 // Check there's a root key to derive from
42017 if (!bip32RootKey) {
42018 return bip32RootKey;
42019 }
42020 var extendedKey = bip32RootKey;
42021 // Derive the key from the path
42022 var pathBits = path.split("/");
42023 for (var i=0; i<pathBits.length; i++) {
42024 var bit = pathBits[i];
42025 var index = parseInt(bit);
42026 if (isNaN(index)) {
42027 continue;
42028 }
42029 var hardened = bit[bit.length-1] == "'";
42030 var isPriv = "privKey" in extendedKey;
42031 var invalidDerivationPath = hardened && !isPriv;
42032 if (invalidDerivationPath) {
42033 extendedKey = null;
42034 }
42035 else if (hardened) {
42036 extendedKey = extendedKey.deriveHardened(index);
42037 }
42038 else {
42039 extendedKey = extendedKey.derive(index);
42040 }
42041 }
42042 return extendedKey
42043 }
42044
42045 function showValidationError(errorText) {
42046 DOM.feedback
42047 .text(errorText)
42048 .show();
42049 }
42050
42051 function hideValidationError() {
42052 DOM.feedback
42053 .text("")
42054 .hide();
42055 }
42056
42057 function findPhraseErrors(phrase) {
42058 // Preprocess the words
42059 phrase = mnemonic.normalizeString(phrase);
42060 var words = phraseToWordArray(phrase);
42061 // Detect blank phrase
42062 if (words.length == 0) {
42063 return "Blank mnemonic";
42064 }
42065 // Check each word
42066 for (var i=0; i<words.length; i++) {
42067 var word = words[i];
42068 var language = getLanguage();
42069 if (WORDLISTS[language].indexOf(word) == -1) {
42070 console.log("Finding closest match to " + word);
42071 var nearestWord = findNearestWord(word);
42072 return word + " not in wordlist, did you mean " + nearestWord + "?";
42073 }
42074 }
42075 // Check the words are valid
42076 var properPhrase = wordArrayToPhrase(words);
42077 var isValid = mnemonic.check(properPhrase);
42078 if (!isValid) {
42079 return "Invalid mnemonic";
42080 }
42081 return false;
42082 }
42083
42084 function validateRootKey(rootKeyBase58) {
42085 try {
42086 bitcoin.HDNode.fromBase58(rootKeyBase58);
42087 }
42088 catch (e) {
42089 return "Invalid root key";
42090 }
42091 return "";
42092 }
42093
42094 function getDerivationPath() {
42095 if (bip44TabSelected()) {
42096 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
42097 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
42098 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
42099 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
42100 var path = "m/";
42101 path += purpose + "'/";
42102 path += coin + "'/";
42103 path += account + "'/";
42104 path += change;
42105 DOM.bip44path.val(path);
42106 var derivationPath = DOM.bip44path.val();
42107 console.log("Using derivation path from BIP44 tab: " + derivationPath);
42108 return derivationPath;
42109 }
42110 else if (bip32TabSelected()) {
42111 var derivationPath = DOM.bip32path.val();
42112 console.log("Using derivation path from BIP32 tab: " + derivationPath);
42113 return derivationPath;
42114 }
42115 else {
42116 console.log("Unknown derivation path");
42117 }
42118 }
42119
42120 function findDerivationPathErrors(path) {
42121 // TODO is not perfect but is better than nothing
42122 // Inspired by
42123 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
42124 // and
42125 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
42126 var maxDepth = 255; // TODO verify this!!
42127 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
42128 if (path[0] != "m") {
42129 return "First character must be 'm'";
42130 }
42131 if (path.length > 1) {
42132 if (path[1] != "/") {
42133 return "Separator must be '/'";
42134 }
42135 var indexes = path.split("/");
42136 if (indexes.length > maxDepth) {
42137 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
42138 }
42139 for (var depth = 1; depth<indexes.length; depth++) {
42140 var index = indexes[depth];
42141 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
42142 if (invalidChars.length > 0) {
42143 return "Invalid characters " + invalidChars + " found at depth " + depth;
42144 }
42145 var indexValue = parseInt(index.replace("'", ""));
42146 if (isNaN(depth)) {
42147 return "Invalid number at depth " + depth;
42148 }
42149 if (indexValue > maxIndexValue) {
42150 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
42151 }
42152 }
42153 }
42154 // Check root key exists or else derivation path is useless!
42155 if (!bip32RootKey) {
42156 return "No root key";
42157 }
42158 // Check no hardened derivation path when using xpub keys
42159 var hardened = path.indexOf("'") > -1;
42160 var isXpubkey = !("privKey" in bip32RootKey);
42161 if (hardened && isXpubkey) {
42162 return "Hardened derivation path is invalid with xpub key";
42163 }
42164 return false;
42165 }
42166
42167 function displayBip44Info() {
42168 // Get the derivation path for the account
42169 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
42170 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
42171 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
42172 var path = "m/";
42173 path += purpose + "'/";
42174 path += coin + "'/";
42175 path += account + "'/";
42176 // Calculate the account extended keys
42177 var accountExtendedKey = calcBip32ExtendedKey(path);
42178 var accountXprv = accountExtendedKey.toBase58();
42179 var accountXpub = accountExtendedKey.toBase58(false);
42180 // Display the extended keys
42181 DOM.bip44accountXprv.val(accountXprv);
42182 DOM.bip44accountXpub.val(accountXpub);
42183 }
42184
42185 function displayBip32Info() {
42186 // Display the key
42187 DOM.seed.val(seed);
42188 var rootKey = bip32RootKey.toBase58();
42189 DOM.rootKey.val(rootKey);
42190 var xprvkeyB58 = "NA";
42191 if (bip32ExtendedKey.privKey) {
42192 xprvkeyB58 = bip32ExtendedKey.toBase58();
42193 }
42194 var extendedPrivKey = xprvkeyB58;
42195 DOM.extendedPrivKey.val(extendedPrivKey);
42196 var extendedPubKey = bip32ExtendedKey.toBase58(false);
42197 DOM.extendedPubKey.val(extendedPubKey);
42198 // Display the addresses and privkeys
42199 clearAddressesList();
42200 displayAddresses(0, 20);
42201 }
42202
42203 function displayAddresses(start, total) {
42204 generationProcesses.push(new (function() {
42205
42206 var rows = [];
42207
42208 this.stop = function() {
42209 for (var i=0; i<rows.length; i++) {
42210 rows[i].shouldGenerate = false;
42211 }
42212 }
42213
42214 for (var i=0; i<total; i++) {
42215 var index = i + start;
42216 rows.push(new TableRow(index));
42217 }
42218
42219 })());
42220 }
42221
42222 function TableRow(index) {
42223
42224 var self = this;
42225 this.shouldGenerate = true;
42226 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
42227
42228 function init() {
42229 calculateValues();
42230 }
42231
42232 function calculateValues() {
42233 setTimeout(function() {
42234 if (!self.shouldGenerate) {
42235 return;
42236 }
42237 var key = "";
42238 if (useHardenedAddresses) {
42239 key = bip32ExtendedKey.deriveHardened(index);
42240 }
42241 else {
42242 key = bip32ExtendedKey.derive(index);
42243 }
42244 var address = key.getAddress().toString();
42245 var privkey = "NA";
42246 if (key.privKey) {
42247 privkey = key.privKey.toWIF(network);
42248 }
42249 var pubkey = key.pubKey.toHex();
42250 var indexText = getDerivationPath() + "/" + index;
42251 if (useHardenedAddresses) {
42252 indexText = indexText + "'";
42253 }
42254 // Ethereum values are different
42255 if (networks[DOM.network.val()].name == "Ethereum") {
42256 var privKeyBuffer = key.privKey.d.toBuffer();
42257 privkey = privKeyBuffer.toString('hex');
42258 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
42259 var hexAddress = addressBuffer.toString('hex');
42260 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
42261 address = ethUtil.addHexPrefix(checksumAddress);
42262 }
42263 addAddressToList(indexText, address, pubkey, privkey);
42264 }, 50)
42265 }
42266
42267 init();
42268
42269 }
42270
42271 function showMore() {
42272 var start = DOM.addresses.children().length;
42273 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
42274 if (isNaN(rowsToAdd)) {
42275 rowsToAdd = 20;
42276 DOM.rowsToAdd.val("20");
42277 }
42278 if (rowsToAdd > 200) {
42279 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
42280 msg += "Do you want to continue?";
42281 if (!confirm(msg)) {
42282 return;
42283 }
42284 }
42285 displayAddresses(start, rowsToAdd);
42286 }
42287
42288 function clearDisplay() {
42289 clearAddressesList();
42290 clearKey();
42291 hideValidationError();
42292 }
42293
42294 function clearAddressesList() {
42295 DOM.addresses.empty();
42296 stopGenerating();
42297 }
42298
42299 function stopGenerating() {
42300 while (generationProcesses.length > 0) {
42301 var generation = generationProcesses.shift();
42302 generation.stop();
42303 }
42304 }
42305
42306 function clearKey() {
42307 DOM.rootKey.val("");
42308 DOM.extendedPrivKey.val("");
42309 DOM.extendedPubKey.val("");
42310 }
42311
42312 function addAddressToList(indexText, address, pubkey, privkey) {
42313 var row = $(addressRowTemplate.html());
42314 // Elements
42315 var indexCell = row.find(".index span");
42316 var addressCell = row.find(".address span");
42317 var pubkeyCell = row.find(".pubkey span");
42318 var privkeyCell = row.find(".privkey span");
42319 // Content
42320 indexCell.text(indexText);
42321 addressCell.text(address);
42322 pubkeyCell.text(pubkey);
42323 privkeyCell.text(privkey);
42324 // Visibility
42325 if (!showIndex) {
42326 indexCell.addClass("invisible");
42327 }
42328 if (!showAddress) {
42329 addressCell.addClass("invisible");
42330 }
42331 if (!showPubKey) {
42332 pubkeyCell.addClass("invisible");
42333 }
42334 if (!showPrivKey) {
42335 privkeyCell.addClass("invisible");
42336 }
42337 DOM.addresses.append(row);
42338 var rowShowQrEls = row.find("[data-show-qr]");
42339 setQrEvents(rowShowQrEls);
42340 }
42341
42342 function hasStrongRandom() {
42343 return 'crypto' in window && window['crypto'] !== null;
42344 }
42345
42346 function disableForms() {
42347 $("form").on("submit", function(e) {
42348 e.preventDefault();
42349 });
42350 }
42351
42352 function parseIntNoNaN(val, defaultVal) {
42353 var v = parseInt(val);
42354 if (isNaN(v)) {
42355 return defaultVal;
42356 }
42357 return v;
42358 }
42359
42360 function showPending() {
42361 DOM.feedback
42362 .text("Calculating...")
42363 .show();
42364 }
42365
42366 function findNearestWord(word) {
42367 var language = getLanguage();
42368 var words = WORDLISTS[language];
42369 var minDistance = 99;
42370 var closestWord = words[0];
42371 for (var i=0; i<words.length; i++) {
42372 var comparedTo = words[i];
42373 if (comparedTo.indexOf(word) == 0) {
42374 return comparedTo;
42375 }
42376 var distance = Levenshtein.get(word, comparedTo);
42377 if (distance < minDistance) {
42378 closestWord = comparedTo;
42379 minDistance = distance;
42380 }
42381 }
42382 return closestWord;
42383 }
42384
42385 function hidePending() {
42386 DOM.feedback
42387 .text("")
42388 .hide();
42389 }
42390
42391 function populateNetworkSelect() {
42392 for (var i=0; i<networks.length; i++) {
42393 var network = networks[i];
42394 var option = $("<option>");
42395 option.attr("value", i);
42396 option.text(network.name);
42397 DOM.phraseNetwork.append(option);
42398 }
42399 }
42400
42401 function populateClientSelect() {
42402 for (var i=0; i<clients.length; i++) {
42403 var client = clients[i];
42404 var option = $("<option>");
42405 option.attr("value", i);
42406 option.text(client.name);
42407 DOM.bip32Client.append(option);
42408 }
42409 }
42410
42411 function getLanguage() {
42412 var defaultLanguage = "english";
42413 // Try to get from existing phrase
42414 var language = getLanguageFromPhrase();
42415 // Try to get from url if not from phrase
42416 if (language.length == 0) {
42417 language = getLanguageFromUrl();
42418 }
42419 // Default to English if no other option
42420 if (language.length == 0) {
42421 language = defaultLanguage;
42422 }
42423 return language;
42424 }
42425
42426 function getLanguageFromPhrase(phrase) {
42427 // Check if how many words from existing phrase match a language.
42428 var language = "";
42429 if (!phrase) {
42430 phrase = DOM.phrase.val();
42431 }
42432 if (phrase.length > 0) {
42433 var words = phraseToWordArray(phrase);
42434 var languageMatches = {};
42435 for (l in WORDLISTS) {
42436 // Track how many words match in this language
42437 languageMatches[l] = 0;
42438 for (var i=0; i<words.length; i++) {
42439 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
42440 if (wordInLanguage) {
42441 languageMatches[l]++;
42442 }
42443 }
42444 // Find languages with most word matches.
42445 // This is made difficult due to commonalities between Chinese
42446 // simplified vs traditional.
42447 var mostMatches = 0;
42448 var mostMatchedLanguages = [];
42449 for (var l in languageMatches) {
42450 var numMatches = languageMatches[l];
42451 if (numMatches > mostMatches) {
42452 mostMatches = numMatches;
42453 mostMatchedLanguages = [l];
42454 }
42455 else if (numMatches == mostMatches) {
42456 mostMatchedLanguages.push(l);
42457 }
42458 }
42459 }
42460 if (mostMatchedLanguages.length > 0) {
42461 // Use first language and warn if multiple detected
42462 language = mostMatchedLanguages[0];
42463 if (mostMatchedLanguages.length > 1) {
42464 console.warn("Multiple possible languages");
42465 console.warn(mostMatchedLanguages);
42466 }
42467 }
42468 }
42469 return language;
42470 }
42471
42472 function getLanguageFromUrl() {
42473 for (var language in WORDLISTS) {
42474 if (window.location.hash.indexOf(language) > -1) {
42475 return language;
42476 }
42477 }
42478 return "";
42479 }
42480
42481 function setMnemonicLanguage() {
42482 var language = getLanguage();
42483 // Load the bip39 mnemonic generator for this language if required
42484 if (!(language in mnemonics)) {
42485 mnemonics[language] = new Mnemonic(language);
42486 }
42487 mnemonic = mnemonics[language];
42488 }
42489
42490 function convertPhraseToNewLanguage() {
42491 var oldLanguage = getLanguageFromPhrase();
42492 var newLanguage = getLanguageFromUrl();
42493 var oldPhrase = DOM.phrase.val();
42494 var oldWords = phraseToWordArray(oldPhrase);
42495 var newWords = [];
42496 for (var i=0; i<oldWords.length; i++) {
42497 var oldWord = oldWords[i];
42498 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
42499 var newWord = WORDLISTS[newLanguage][index];
42500 newWords.push(newWord);
42501 }
42502 newPhrase = wordArrayToPhrase(newWords);
42503 return newPhrase;
42504 }
42505
42506 // TODO look at jsbip39 - mnemonic.splitWords
42507 function phraseToWordArray(phrase) {
42508 var words = phrase.split(/\s/g);
42509 var noBlanks = [];
42510 for (var i=0; i<words.length; i++) {
42511 var word = words[i];
42512 if (word.length > 0) {
42513 noBlanks.push(word);
42514 }
42515 }
42516 return noBlanks;
42517 }
42518
42519 // TODO look at jsbip39 - mnemonic.joinWords
42520 function wordArrayToPhrase(words) {
42521 var phrase = words.join(" ");
42522 var language = getLanguageFromPhrase(phrase);
42523 if (language == "japanese") {
42524 phrase = words.join("\u3000");
42525 }
42526 return phrase;
42527 }
42528
42529 function isUsingOwnEntropy() {
42530 return DOM.useEntropy.prop("checked");
42531 }
42532
42533 function setMnemonicFromEntropy() {
42534 clearEntropyFeedback();
42535 // Get entropy value
42536 var entropyStr = DOM.entropy.val();
42537 // Work out minimum base for entropy
42538 var entropy = Entropy.fromString(entropyStr);
42539 if (entropy.binaryStr.length == 0) {
42540 return;
42541 }
42542 // Show entropy details
42543 showEntropyFeedback(entropy);
42544 // Use entropy hash if not using raw entropy
42545 var bits = entropy.binaryStr;
42546 var mnemonicLength = DOM.entropyMnemonicLength.val();
42547 if (mnemonicLength != "raw") {
42548 // Get bits by hashing entropy with SHA256
42549 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
42550 var hex = sjcl.codec.hex.fromBits(hash);
42551 bits = BigInteger.parse(hex, 16).toString(2);
42552 while (bits.length % 256 != 0) {
42553 bits = "0" + bits;
42554 }
42555 // Truncate hash to suit number of words
42556 mnemonicLength = parseInt(mnemonicLength);
42557 var numberOfBits = 32 * mnemonicLength / 3;
42558 bits = bits.substring(0, numberOfBits);
42559 }
42560 // Discard trailing entropy
42561 var bitsToUse = Math.floor(bits.length / 32) * 32;
42562 var start = bits.length - bitsToUse;
42563 var binaryStr = bits.substring(start);
42564 // Convert entropy string to numeric array
42565 var entropyArr = [];
42566 for (var i=0; i<binaryStr.length / 8; i++) {
42567 var byteAsBits = binaryStr.substring(i*8, i*8+8);
42568 var entropyByte = parseInt(byteAsBits, 2);
42569 entropyArr.push(entropyByte)
42570 }
42571 // Convert entropy array to mnemonic
42572 var phrase = mnemonic.toMnemonic(entropyArr);
42573 // Set the mnemonic in the UI
42574 DOM.phrase.val(phrase);
42575 }
42576
42577 function clearEntropyFeedback() {
42578 DOM.entropyStrength.text("...");
42579 DOM.entropyType.text("");
42580 DOM.entropyWordCount.text("0");
42581 DOM.entropyEventCount.text("0");
42582 DOM.entropyBitsPerEvent.text("0");
42583 DOM.entropyBits.text("0");
42584 DOM.entropyFiltered.html("&nbsp;");
42585 DOM.entropyBinary.html("&nbsp;");
42586 }
42587
42588 function showEntropyFeedback(entropy) {
42589 var numberOfBits = entropy.binaryStr.length;
42590 var strength = "extremely weak";
42591 if (numberOfBits >= 64) {
42592 strength = "very weak";
42593 }
42594 if (numberOfBits >= 96) {
42595 strength = "weak";
42596 }
42597 if (numberOfBits >= 128) {
42598 strength = "strong";
42599 }
42600 if (numberOfBits >= 160) {
42601 strength = "very strong";
42602 }
42603 if (numberOfBits >= 192) {
42604 strength = "extremely strong";
42605 }
42606 // If time to crack is less than one day, and password is considered
42607 // strong or better based on the number of bits, rename strength to
42608 // 'easily cracked'.
42609 try {
42610 var z = zxcvbn(entropy.base.parts.join(""));
42611 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
42612 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
42613 strength = "easily cracked";
42614 if (z.feedback.warning != "") {
42615 strength = strength + " - " + z.feedback.warning;
42616 };
42617 }
42618 }
42619 catch (e) {
42620 strength = "unknown";
42621 console.log("Error detecting entropy strength with zxcvbn:");
42622 console.log(e);
42623 }
42624 var entropyTypeStr = getEntropyTypeStr(entropy);
42625 var wordCount = Math.floor(numberOfBits / 32) * 3;
42626 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
42627 DOM.entropyFiltered.html(entropy.cleanHtml);
42628 DOM.entropyType.text(entropyTypeStr);
42629 DOM.entropyStrength.text(strength);
42630 DOM.entropyEventCount.text(entropy.base.ints.length);
42631 DOM.entropyBits.text(numberOfBits);
42632 DOM.entropyWordCount.text(wordCount);
42633 DOM.entropyBinary.text(entropy.binaryStr);
42634 DOM.entropyBitsPerEvent.text(bitsPerEvent);
42635 }
42636
42637 function getEntropyTypeStr(entropy) {
42638 var typeStr = entropy.base.str;
42639 // Add some detail if these are cards
42640 if (entropy.base.asInt == 52) {
42641 var cardDetail = []; // array of message strings
42642 // Detect duplicates
42643 var dupes = [];
42644 var dupeTracker = {};
42645 for (var i=0; i<entropy.base.parts.length; i++) {
42646 var card = entropy.base.parts[i];
42647 var cardUpper = card.toUpperCase();
42648 if (cardUpper in dupeTracker) {
42649 dupes.push(card);
42650 }
42651 dupeTracker[cardUpper] = true;
42652 }
42653 if (dupes.length > 0) {
42654 var dupeWord = "duplicates";
42655 if (dupes.length == 1) {
42656 dupeWord = "duplicate";
42657 }
42658 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
42659 if (dupes.length > 3) {
42660 msg += "...";
42661 }
42662 cardDetail.push(msg);
42663 }
42664 // Detect full deck
42665 var uniqueCards = [];
42666 for (var uniqueCard in dupeTracker) {
42667 uniqueCards.push(uniqueCard);
42668 }
42669 if (uniqueCards.length == 52) {
42670 cardDetail.unshift("full deck");
42671 }
42672 // Detect missing cards
42673 var values = "A23456789TJQK";
42674 var suits = "CDHS";
42675 var missingCards = [];
42676 for (var i=0; i<suits.length; i++) {
42677 for (var j=0; j<values.length; j++) {
42678 var card = values[j] + suits[i];
42679 if (!(card in dupeTracker)) {
42680 missingCards.push(card);
42681 }
42682 }
42683 }
42684 // Display missing cards if six or less, ie clearly going for full deck
42685 if (missingCards.length > 0 && missingCards.length <= 6) {
42686 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
42687 if (missingCards.length > 3) {
42688 msg += "...";
42689 }
42690 cardDetail.push(msg);
42691 }
42692 // Add card details to typeStr
42693 if (cardDetail.length > 0) {
42694 typeStr += " (" + cardDetail.join(", ") + ")";
42695 }
42696 }
42697 return typeStr;
42698 }
42699
42700 function setQrEvents(els) {
42701 els.on("mouseenter", createQr);
42702 els.on("mouseleave", destroyQr);
42703 els.on("click", toggleQr);
42704 }
42705
42706 function createQr(e) {
42707 var content = e.target.textContent || e.target.value;
42708 if (content) {
42709 var size = 130;
42710 DOM.qrImage.qrcode({width: size, height: size, text: content});
42711 if (!showQr) {
42712 DOM.qrHider.addClass("hidden");
42713 }
42714 else {
42715 DOM.qrHider.removeClass("hidden");
42716 }
42717 DOM.qrContainer.removeClass("hidden");
42718 }
42719 }
42720
42721 function destroyQr() {
42722 DOM.qrImage.text("");
42723 DOM.qrContainer.addClass("hidden");
42724 }
42725
42726 function toggleQr() {
42727 showQr = !showQr;
42728 DOM.qrHider.toggleClass("hidden");
42729 DOM.qrHint.toggleClass("hidden");
42730 }
42731
42732 function bip44TabSelected() {
42733 return DOM.bip44tab.hasClass("active");
42734 }
42735
42736 function bip32TabSelected() {
42737 return DOM.bip32tab.hasClass("active");
42738 }
42739
42740 var networks = [
42741 {
42742 name: "Bitcoin",
42743 onSelect: function() {
42744 network = bitcoin.networks.bitcoin;
42745 DOM.bip44coin.val(0);
42746 },
42747 },
42748 {
42749 name: "Bitcoin Testnet",
42750 onSelect: function() {
42751 network = bitcoin.networks.testnet;
42752 DOM.bip44coin.val(1);
42753 },
42754 },
42755 {
42756 name: "CLAM",
42757 onSelect: function() {
42758 network = bitcoin.networks.clam;
42759 DOM.bip44coin.val(23);
42760 },
42761 },
42762 {
42763 name: "Dogecoin",
42764 onSelect: function() {
42765 network = bitcoin.networks.dogecoin;
42766 DOM.bip44coin.val(3);
42767 },
42768 },
42769 {
42770 name: "DASH",
42771 onSelect: function() {
42772 network = bitcoin.networks.dash;
42773 DOM.bip44coin.val(5);
42774 },
42775 },
42776 {
42777 name: "Ethereum",
42778 onSelect: function() {
42779 network = bitcoin.networks.bitcoin;
42780 DOM.bip44coin.val(60);
42781 },
42782 },
42783 {
42784 name: "Jumbucks",
42785 onSelect: function() {
42786 network = bitcoin.networks.jumbucks;
42787 DOM.bip44coin.val(26);
42788 },
42789 },
42790 {
42791 name: "Litecoin",
42792 onSelect: function() {
42793 network = bitcoin.networks.litecoin;
42794 DOM.bip44coin.val(2);
42795 },
42796 },
42797 {
42798 name: "Namecoin",
42799 onSelect: function() {
42800 network = bitcoin.networks.namecoin;
42801 DOM.bip44coin.val(7);
42802 },
42803 },
42804 {
42805 name: "Peercoin",
42806 onSelect: function() {
42807 network = bitcoin.networks.peercoin;
42808 DOM.bip44coin.val(6);
42809 },
42810 },
42811 {
42812 name: "ShadowCash",
42813 onSelect: function() {
42814 network = bitcoin.networks.shadow;
42815 DOM.bip44coin.val(35);
42816 },
42817 },
42818 {
42819 name: "ShadowCash Testnet",
42820 onSelect: function() {
42821 network = bitcoin.networks.shadowtn;
42822 DOM.bip44coin.val(1);
42823 },
42824 },
42825 {
42826 name: "Viacoin",
42827 onSelect: function() {
42828 network = bitcoin.networks.viacoin;
42829 DOM.bip44coin.val(14);
42830 },
42831 },
42832 {
42833 name: "Viacoin Testnet",
42834 onSelect: function() {
42835 network = bitcoin.networks.viacointestnet;
42836 DOM.bip44coin.val(1);
42837 },
42838 },
42839 ]
42840
42841 var clients = [
42842 {
42843 name: "Bitcoin Core",
42844 onSelect: function() {
42845 DOM.bip32path.val("m/0'/0'");
42846 DOM.hardenedAddresses.prop('checked', true);
42847 },
42848 },
42849 {
42850 name: "blockchain.info",
42851 onSelect: function() {
42852 DOM.bip32path.val("m/44'/0'/0'");
42853 DOM.hardenedAddresses.prop('checked', false);
42854 },
42855 },
42856 {
42857 name: "MultiBit HD",
42858 onSelect: function() {
42859 DOM.bip32path.val("m/0'/0");
42860 DOM.hardenedAddresses.prop('checked', false);
42861 },
42862 }
42863 ]
42864
42865 init();
42866
42867 })();
42868 </script>
42869 </body>
42870 </html>