gpt-tokenizer
Version:
A pure JavaScript implementation of a BPE tokenizer (Encoder/Decoder) for GPT-2 / GPT-3 / GPT-4 and other OpenAI models
1 lines • 994 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("GPTTokenizer_cl100k_base",[],t):"object"==typeof exports?exports.GPTTokenizer_cl100k_base=t():e.GPTTokenizer_cl100k_base=t()}(globalThis,(()=>(()=>{"use strict";var e={626:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BytePairEncodingCore=t.decoder=void 0;const i=a(242),n=a(995),r=a(462),o=new Uint8Array(0);t.decoder=new TextDecoder("utf8"),t.BytePairEncodingCore=class{mergeableBytePairRankCount;bytePairRankDecoder;bytePairNonUtfRankDecoder=new Map;bytePairNonUtfSortedEncoder;bytePairStringRankEncoder;tokenSplitRegex;specialTokensEncoder;specialTokensDecoder;specialTokenPatternRegex;textEncoder=new TextEncoder;mergeCache;mergeCacheSize;constructor({bytePairRankDecoder:e,specialTokensEncoder:t,tokenSplitRegex:a,mergeCacheSize:o=i.DEFAULT_MERGE_CACHE_SIZE}){this.bytePairRankDecoder=e,this.bytePairStringRankEncoder=new Map,this.mergeCacheSize=o,o>0&&(this.mergeCache=new Map),this.mergeableBytePairRankCount=Object.keys(e).length;const s=[];e.forEach(((e,t)=>{if("string"==typeof e)return void this.bytePairStringRankEncoder.set(e,t);const a=new Uint8Array(e);s.push([a,t]),this.bytePairNonUtfRankDecoder.set(t,a)})),this.bytePairNonUtfSortedEncoder=s.sort(((e,t)=>(0,n.compareUint8Arrays)(e[0],t[0]))),this.specialTokensEncoder=t??new Map,this.specialTokensDecoder=t?new Map([...t].map((([e,t])=>[t,e]))):new Map,this.tokenSplitRegex=a;const l=[...this.specialTokensEncoder.keys()].map(r.escapeRegExp).join("|");try{this.specialTokenPatternRegex=new RegExp(l,"y")}catch{throw new Error("Invalid regular expression pattern.")}}setMergeCacheSize(e){0===this.mergeCacheSize&&e>0&&(this.mergeCache=new Map),this.mergeCacheSize=e,0===e&&(this.mergeCache=void 0)}clearMergeCache(){this.mergeCache?.clear()}*encodeNativeGenerator(e,t){let a=0,i=0;for(;;){const n=this.findNextSpecialToken(e,t,a),r=n?.[0],o=r??e.length,s=0===a&&o===e.length?e:e.slice(a,o);for(const[e]of s.matchAll(this.tokenSplitRegex)){const t=this.getBpeRankFromString(e);if(void 0!==t){i=1,yield[t];continue}const a=this.bytePairEncode(e);i=a.length,yield a}if(void 0===r)break;{const e=n[1],t=this.specialTokensEncoder.get(e);if(void 0===t)throw new Error(`Special token "${e}" is not in the special token encoder.`);yield[t],a=r+e.length,i=1}}return i}encodeNative(e,t){let a=0;const i=[];for(;;){const n=this.findNextSpecialToken(e,t,a),r=n?.[0],o=r??e.length,s=0===a&&o===e.length?e:e.slice(a,o);for(const[e]of s.matchAll(this.tokenSplitRegex)){const t=this.getBpeRankFromString(e);if(void 0!==t){i.push(t);continue}const a=this.bytePairEncode(e);i.push(...a)}if(void 0===r)break;{const e=n[1],t=this.specialTokensEncoder.get(e);if(void 0===t)throw new Error(`Special token "${e}" is not in the special token encoder.`);i.push(t),a=r+e.length}}return i}countNative(e,t){let a=0,i=0;for(;;){const n=this.findNextSpecialToken(e,t,a),r=n?.[0],o=r??e.length,s=0===a&&o===e.length?e:e.slice(a,o);for(const[e]of s.matchAll(this.tokenSplitRegex))void 0===this.getBpeRankFromString(e)?i+=this.bytePairEncode(e).length:i++;if(void 0===r)break;{const e=n[1];if(void 0===this.specialTokensEncoder.get(e))throw new Error(`Special token "${e}" is not in the special token encoder.`);i++,a=r+e.length}}return i}*decodeNativeGenerator(e){for(const t of e){const e=this.tryDecodeToken(t);e&&(yield e)}}decodeNative(e){let a="",i=o;for(const n of e){const e=this.tryDecodeToken(n);if(void 0===e)throw new Error(`Token ${n} is not in the byte pair encoder.`);if("string"==typeof e)i!==o&&(a+=t.decoder.decode(i,{stream:!0}),i=o),a+=e;else{const t=new Uint8Array(i.length+e.length);t.set(i),t.set(e,i.length),i=t}}return i!==o&&(a+=t.decoder.decode(i,{stream:!0})),a}async*decodeNativeAsyncIterable(e){for await(const t of e){const e=this.tryDecodeToken(t);e&&(yield e)}}getBpeRankFromString(e){return this.bytePairStringRankEncoder.get(e)}getBpeRankFromStringOrThrow(e){const t=this.getBpeRankFromString(e);if(void 0===t)throw new Error(`The byte-pair encoding does not contain a value for: ${e}`);return t}getBpeRankFromBytes(e){const t=(0,n.tryConvertToString)(e);if(void 0!==t)return this.getBpeRankFromString(t);const a=this.binarySearch(e);return-1!==a?this.bytePairNonUtfSortedEncoder[a][1]:void 0}getBpeRankFromBytesOrThrow(e){const t=this.getBpeRankFromBytes(e);if(void 0===t)throw new Error(`The byte-pair encoding does not contain a value for: ${e.toString()}`);return t}binarySearch(e){let t=0,a=this.bytePairNonUtfSortedEncoder.length-1;for(;t<=a;){const i=t+a>>>1,n=this.bytePairNonUtfSortedEncoder[i][0];let r=0;const o=Math.min(n.length,e.length);for(let t=0;t<o&&(r=n[t]-e[t],0===r);t++);if(0===r&&(r=n.length-e.length),0===r)return i;r<0?t=i+1:a=i-1}return-1}findNextSpecialToken(e,t,a){let i=a;for(;;){this.specialTokenPatternRegex.lastIndex=i;const a=this.specialTokenPatternRegex.exec(e);if(!a)return;const n=a[0];if(t?.has(n))return[a.index+i,n];i=a.index+i+1}}tryDecodeToken(e){const t=this.bytePairRankDecoder[e];if("string"==typeof t)return t;if("object"==typeof t){const t=this.bytePairNonUtfRankDecoder.get(e);if(t)return t}return this.specialTokensDecoder.get(e)}addToMergeCache(e,t){if(this.mergeCache){if(this.mergeCache.size>=this.mergeCacheSize){const e=this.mergeCache.keys().next().value;this.mergeCache.delete(e)}this.mergeCache.set(e,t)}}bytePairEncode(e){if(1===e.length&&(0,n.isAscii)(e.codePointAt(0)))return[this.getBpeRankFromStringOrThrow(e)];if(this.mergeCache?.has(e)){const t=this.mergeCache.get(e);return this.mergeCache.delete(e),this.mergeCache.set(e,t),t}const t=this.textEncoder.encode(e),a=this.bytePairMerge(t);return this.addToMergeCache(e,a),a}bytePairMerge(e){const t=[],a=[],i=(a,i=t[a],n=t[a+2])=>{if(void 0===n)return Number.POSITIVE_INFINITY;const r=e.subarray(i,n);return this.getBpeRankFromBytes(r)??Number.POSITIVE_INFINITY};for(let n=0;n<=e.length;n++)t.push(n),n<e.length-1?a.push(i(n,n,n+2)):a.push(Number.POSITIVE_INFINITY);for(;t.length>1;){let e=Number.POSITIVE_INFINITY,n=-1;for(let t=0;t<a.length-1;t++){const i=a[t];i<e&&(e=i,n=t)}if(e===Number.POSITIVE_INFINITY||-1===n)break;t.splice(n+1,1),a.splice(n,1),a[n]=i(n),n>0&&(a[n-1]=i(n-1))}const n=[];for(let a=0;a<t.length-1;a++){const i=t[a],r=t[a+1],o=this.getBpeRankFromBytesOrThrow(e.subarray(i,r));n.push(o)}return n}}},945:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GptEncoding=void 0;const i=a(626),n=a(242),r=a(179),o=a(177),s=a(778),l=a(795),c=a(995),d=a(462);class u{static EndOfPrompt=l.EndOfPrompt;static EndOfText=l.EndOfText;static FimMiddle=l.FimMiddle;static FimPrefix=l.FimPrefix;static FimSuffix=l.FimSuffix;modelName;bytePairEncodingCoreProcessor;specialTokensEncoder;specialTokensSet;allSpecialTokenRegex;defaultSpecialTokenConfig;vocabularySize;constructor({bytePairRankDecoder:e,specialTokensEncoder:t,expectedVocabularySize:a,modelName:n,...r}){this.specialTokensEncoder=t,this.specialTokensSet=new Set(this.specialTokensEncoder.keys()),this.allSpecialTokenRegex=(0,d.getSpecialTokenRegex)(this.specialTokensSet),this.bytePairEncodingCoreProcessor=new i.BytePairEncodingCore({bytePairRankDecoder:e,specialTokensEncoder:t,...r}),this.defaultSpecialTokenConfig=this.processSpecialTokens();const o=Math.max(e.length-1,(0,d.getMaxValueFromMap)(t));if(this.vocabularySize=this.bytePairEncodingCoreProcessor.mergeableBytePairRankCount+t.size,void 0!==a){if(this.vocabularySize!==a)throw new Error("The number of mergeable tokens and special tokens must be equal to expectedVocabularySize.");if(o!==a-1)throw new Error(`The model encodings are invalid. The maximum token value must be equal to expectedVocabularySize - 1. Currently ${o}, expected ${a-1}`)}this.encode=this.encode.bind(this),this.decode=this.decode.bind(this),this.encodeGenerator=this.encodeGenerator.bind(this),this.decodeGenerator=this.decodeGenerator.bind(this),this.decodeAsyncGenerator=this.decodeAsyncGenerator.bind(this),this.decodeAsync=this.decodeAsync.bind(this),this.isWithinTokenLimit=this.isWithinTokenLimit.bind(this),this.encodeChat=this.encodeChat.bind(this),this.encodeChatGenerator=this.encodeChatGenerator.bind(this),this.countTokens=this.countTokens.bind(this),this.setMergeCacheSize=this.setMergeCacheSize.bind(this),this.clearMergeCache=this.clearMergeCache.bind(this),this.estimateCost=this.estimateCost.bind(this),this.modelName=n}static getEncodingApi(e,t){const a=(0,o.getEncodingParams)(e,t);return new u(a)}static getEncodingApiForModel(e,t){const a=r.modelToEncodingMap[e],i=(0,o.getEncodingParams)(a,t);return new u({...i,modelName:e})}processSpecialTokens({allowedSpecial:e,disallowedSpecial:t}={}){let a;if(e===n.ALL_SPECIAL_TOKENS||e?.has(n.ALL_SPECIAL_TOKENS)){const a=e=new Set(this.specialTokensSet);if(t===n.ALL_SPECIAL_TOKENS)throw new Error('allowedSpecial and disallowedSpecial cannot both be set to "all".');"object"==typeof t?t.forEach((e=>a.delete(e))):t=new Set}if(!t||t===n.ALL_SPECIAL_TOKENS||t.has(n.ALL_SPECIAL_TOKENS)){const i=t=new Set(this.specialTokensSet);e?.size?(e.forEach((e=>i.delete(e))),t.forEach((t=>e.delete(t))),t.size>0&&(a=(0,d.getSpecialTokenRegex)(t))):a=this.allSpecialTokenRegex}return{allowedSpecial:e,regexPattern:a}}encodeGenerator(e,t){const a=t?this.processSpecialTokens(t):this.defaultSpecialTokenConfig;if(a.regexPattern){const t=e.match(a.regexPattern);if(null!==t)throw new Error(`Disallowed special token found: ${t[0]}`)}return this.bytePairEncodingCoreProcessor.encodeNativeGenerator(e,a.allowedSpecial)}encode(e,t){const a=t?this.processSpecialTokens(t):this.defaultSpecialTokenConfig;if(a.regexPattern){const t=e.match(a.regexPattern);if(null!==t)throw new Error(`Disallowed special token found: ${t[0]}`)}return this.bytePairEncodingCoreProcessor.encodeNative(e,a.allowedSpecial)}*encodeChatGenerator(e,t=this.modelName){if(!t)throw new Error("Model name must be provided either during initialization or passed in to the method.");const a=r.chatModelParams[t],i=this.specialTokensEncoder.get(l.ImStart),n=this.specialTokensEncoder.get(l.ImEnd);if(!a||void 0===i||void 0===n)throw new Error(`Model '${t}' does not support chat.`);const o=new Set([l.ImSep]),{messageSeparator:s,roleSeparator:c}=a,d=s.length>0?this.encode(s):[],u=c.length>0?this.encode(c,{allowedSpecial:o}):[],p=new Map;for(const{role:t="system",name:a=t,content:r}of e){if(void 0===r)throw new Error("Content must be defined for all messages.");yield[i];const e=p.get(a)??this.encode(a);p.set(a,e),yield e,u.length>0&&(yield u),yield*this.encodeGenerator(r),yield[n],yield d}yield[i],yield*this.encodeGenerator("assistant"),u.length>0&&(yield u)}encodeChat(e,t=this.modelName){return[...this.encodeChatGenerator(e,t)].flat()}isWithinTokenLimit(e,t){const a="string"==typeof e?this.encodeGenerator(e):this.encodeChatGenerator(e);let i=0;for(const e of a)if(i+=e.length,i>t)return!1;return i}countTokens(e,t){if("string"==typeof e){const a=t?this.processSpecialTokens(t):this.defaultSpecialTokenConfig;if(a.regexPattern){const t=e.match(a.regexPattern);if(null!==t)throw new Error(`Disallowed special token found: ${t[0]}`)}return this.bytePairEncodingCoreProcessor.countNative(e,a.allowedSpecial)}const a=this.encodeChatGenerator(e);let i=0;for(const e of a)i+=e.length;return i}setMergeCacheSize(e){this.bytePairEncodingCoreProcessor.setMergeCacheSize(e)}clearMergeCache(){this.bytePairEncodingCoreProcessor.clearMergeCache()}decode(e){return this.bytePairEncodingCoreProcessor.decodeNative(e)}*decodeGenerator(e){const t=this.bytePairEncodingCoreProcessor.decodeNativeGenerator(e);let a="";for(const e of t)a+="string"==typeof e?e:i.decoder.decode(e,{stream:!0}),0===a.length||(0,c.endsWithIncompleteUtfPairSurrogate)(a)||(yield a,a="");a.length>0&&(yield a)}async*decodeAsyncGenerator(e){const t=this.bytePairEncodingCoreProcessor.decodeNativeAsyncIterable(e);let a="";for await(const e of t)a+="string"==typeof e?e:i.decoder.decode(e,{stream:!0}),0===a.length||(0,c.endsWithIncompleteUtfPairSurrogate)(a)||(yield a,a="");a.length>0&&(yield a)}async decodeAsync(e){const t=this.bytePairEncodingCoreProcessor.decodeNativeAsyncIterable(e);let a="";for await(const e of t)a+="string"==typeof e?e:i.decoder.decode(e,{stream:!0});return a}estimateCost(e,t=this.modelName){if(!t)throw new Error("Model name must be provided either during initialization or passed in to the method.");const a=s.models[t];if(!a)throw new Error(`Unknown model: ${t}`);if(!a.cost)throw new Error(`No cost information available for model: ${t}`);const i=a.cost,n={},r=e/1e6;return void 0!==i.input&&(n.input=i.input*r),void 0!==i.output&&(n.output=i.output*r),void 0!==i.batchInput&&(n.batchInput=i.batchInput*r),void 0!==i.batchOutput&&(n.batchOutput=i.batchOutput*r),n}}t.GptEncoding=u},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_MERGE_CACHE_SIZE=t.ALL_SPECIAL_TOKENS=void 0,t.ALL_SPECIAL_TOKENS="all",t.DEFAULT_MERGE_CACHE_SIZE=1e5},593:function(e,t,a){var i=this&&this.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||i(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),t.vocabularySize=t.setMergeCacheSize=t.isWithinTokenLimit=t.estimateCost=t.encodeGenerator=t.encodeChatGenerator=t.encodeChat=t.encode=t.decodeGenerator=t.decodeAsyncGenerator=t.decode=t.countTokens=t.clearMergeCache=void 0;const r=a(896),o=a(945);n(a(242),t),n(a(795),t);const s=o.GptEncoding.getEncodingApi("cl100k_base",(()=>r.default)),{decode:l,decodeAsyncGenerator:c,decodeGenerator:d,encode:u,encodeGenerator:p,isWithinTokenLimit:m,countTokens:g,encodeChat:h,encodeChatGenerator:b,vocabularySize:y,setMergeCacheSize:f,clearMergeCache:_,estimateCost:v}=s;t.decode=l,t.decodeAsyncGenerator=c,t.decodeGenerator=d,t.encode=u,t.encodeGenerator=p,t.isWithinTokenLimit=m,t.countTokens=g,t.encodeChat=h,t.encodeChatGenerator=b,t.vocabularySize=y,t.setMergeCacheSize=f,t.clearMergeCache=_,t.estimateCost=v,t.default=s},120:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Cl100KBase=function(e){const t=new Map([[i.EndOfText,100257],[i.FimPrefix,100258],[i.FimMiddle,100259],[i.FimSuffix,100260],[i.ImStart,100264],[i.ImEnd,100265],[i.ImSep,100266],[i.EndOfPrompt,100276]]);return{tokenSplitRegex:n.CL_AND_O_TOKEN_SPLIT_PATTERN,bytePairRankDecoder:e,specialTokensEncoder:t}};const i=a(795),n=a(417)},417:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CL_AND_O_TOKEN_SPLIT_PATTERN=t.R50K_TOKEN_SPLIT_REGEX=void 0,t.R50K_TOKEN_SPLIT_REGEX=/'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu,t.CL_AND_O_TOKEN_SPLIT_PATTERN=/(?:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}{1,3}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+/giu},955:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.O200KBase=function(e){const t=new Map([[i.EndOfText,199999],[i.FimPrefix,2e5],[i.FimMiddle,200001],[i.FimSuffix,200002],[i.ImStart,200003],[i.ImEnd,200004],[i.ImSep,200005],[i.EndOfPrompt,200006]]);return{tokenSplitRegex:n.CL_AND_O_TOKEN_SPLIT_PATTERN,bytePairRankDecoder:e,specialTokensEncoder:t}};const i=a(795),n=a(417)},398:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.P50KBase=function(e){return{expectedVocabularySize:50281,tokenSplitRegex:n.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:new Map([[i.EndOfText,50256]])}},a(177);const i=a(795),n=a(417)},517:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.P50KEdit=function(e){const t=new Map([[i.EndOfText,50256],[i.FimPrefix,50281],[i.FimMiddle,50282],[i.FimSuffix,50283]]);return{tokenSplitRegex:n.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:t}},a(177);const i=a(795),n=a(417)},401:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.R50KBase=function(e){return{expectedVocabularySize:50257,tokenSplitRegex:n.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:new Map([[i.EndOfText,50256]])}},a(177);const i=a(795),n=a(417)},981:function(e,t,a){var i=this&&this.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||i(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(593);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}}),n(a(593),t)},179:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.chatEnabledModelsList=t.chatModelParams=t.modelToEncodingMap=t.encodingNames=t.o200k_base=t.r50k_base=t.p50k_edit=t.p50k_base=t.cl100k_base=void 0;const i=a(778),n=a(795);t.cl100k_base="cl100k_base",t.p50k_base="p50k_base",t.p50k_edit="p50k_edit",t.r50k_base="r50k_base",t.o200k_base="o200k_base",t.encodingNames=[t.p50k_base,t.r50k_base,t.p50k_edit,t.cl100k_base,t.o200k_base];const r=Object.fromEntries(Object.entries(i.chatEnabledModels).map((([e,t])=>[e,t.encoding])));t.modelToEncodingMap=Object.fromEntries(Object.entries(i.models).map((([e,t])=>[e,t.encoding])));const o={messageSeparator:"\n",roleSeparator:"\n"},s={messageSeparator:"",roleSeparator:n.ImSep};t.chatModelParams=Object.fromEntries(Object.keys(r).flatMap((e=>e.startsWith("gpt-4")?[[e,s]]:e.startsWith("gpt-3.5-turbo")?[[e,o]]:[]))),t.chatEnabledModelsList=Object.keys(r)},177:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getEncodingParams=function(e,t){const a=t(e);switch(e.toLowerCase()){case"r50k_base":return(0,s.R50KBase)(a);case"p50k_base":return(0,r.P50KBase)(a);case"p50k_edit":return(0,o.P50KEdit)(a);case"cl100k_base":return(0,i.Cl100KBase)(a);case"o200k_base":return(0,n.O200KBase)(a);default:throw new Error(`Unknown encoding name: ${e}`)}};const i=a(120),n=a(955),r=a(398),o=a(517),s=a(401)},778:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.models=t.chatEnabledModels=void 0;const a={humanName:"GPT-4o (Aug 2024)",description:"Our high-intelligence flagship model for complex, multi-step tasks. GPT-4o is cheaper and faster than GPT-4 Turbo. Currently points to gpt-4o-2024-08-06.",encoding:"o200k_base",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:2.5,output:10,batchInput:1.25,batchOutput:5,cachedInput:1.25}},i={humanName:"GPT-4o Mini",description:"Our affordable and intelligent small model for fast, lightweight tasks. GPT-4o mini is cheaper and more capable than GPT-3.5 Turbo. Currently points to gpt-4o-mini-2024-07-18.",encoding:"o200k_base",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:.15,output:.6,batchInput:.075,batchOutput:.3,cachedInput:.075}},n={humanName:"OpenAI o1",description:"Our most intelligent model, optimal for complex tasks requiring deep understanding and expertise. Currently points to o1-2024-12-17.",encoding:"o200k_base",context:128e3,maxOutput:32768,trainingData:"2023-10",cost:{input:15,output:60,batchInput:7.5,batchOutput:30,cachedInput:7.5}},r={humanName:"OpenAI o1-preview",description:"Preview version of the o1 model: o1-preview-2024-09-12.",encoding:"o200k_base",context:128e3,maxOutput:32768,trainingData:"2023-10",cost:{input:15,output:60,batchInput:7.5,batchOutput:30,cachedInput:7.5}},o={humanName:"OpenAI o1-mini",description:"Points to the most recent o1-mini snapshot: o1-mini-2024-09-12.",encoding:"o200k_base",context:128e3,maxOutput:65536,trainingData:"2023-10",cost:{input:1.1,output:4.4,batchInput:.55,batchOutput:2.2,cachedInput:.55}},s={humanName:"GPT-4o Mini Realtime Preview (Dec 2024)",encoding:"o200k_base",description:"Mini version for the Realtime API with December 2024 snapshot.",context:128e3,maxOutput:4096,trainingData:"2023-10",cost:{input:.6,output:2.4,cachedInput:.3}},l={humanName:"GPT-4o Mini Audio Preview (Dec 2024)",encoding:"o200k_base",description:"Mini version for the Audio API with December 2024 snapshot.",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:.15,output:.6}},c={humanName:"GPT-4o Mini Training",description:"Training GPT-4o Mini with custom datasets.",encoding:"o200k_base",cost:{input:3,output:0,batchInput:1.5,batchOutput:0}},d={humanName:"GPT-4 Turbo 2024-04-09",description:"The latest GPT-4 Turbo model with vision capabilities. Vision requests can now use JSON mode and function calling. Currently points to gpt-4-turbo-2024-04-09.",encoding:"cl100k_base",context:128e3,maxOutput:4096,trainingData:"2023-12",cost:{input:10,output:30,batchInput:5,batchOutput:15}},u={humanName:"GPT-4",description:"Currently points to gpt-4-0613. See continuous model upgrades.",encoding:"cl100k_base",context:8192,maxOutput:8192,trainingData:"2021-09",cost:{input:30,output:60,batchInput:15,batchOutput:30}},p={humanName:"GPT-4 0125 Preview",description:"GPT-4 Turbo preview model intended to reduce cases of “laziness” where the model doesn’t complete a task.",encoding:"cl100k_base",context:128e3,maxOutput:4096,trainingData:"2023-12",cost:{input:10,output:30,batchInput:5,batchOutput:15}},m={...p,humanName:"GPT-4 1106 Preview"},g={humanName:"GPT-3.5 Turbo 0125",description:"The latest GPT-3.5 Turbo model with higher accuracy at responding in requested formats and a fix for a bug which caused a text encoding issue for non-English language function calls.",encoding:"cl100k_base",context:16385,maxOutput:4096,trainingData:"2021-09",cost:{input:.5,output:1.5,batchInput:.25,batchOutput:.75}},h={humanName:"GPT-3.5 Turbo Instruct",description:"Similar capabilities as GPT-3 era models. Compatible with legacy Completions endpoint and not Chat Completions.",encoding:"cl100k_base",context:4096,maxOutput:4096,trainingData:"2021-09",cost:{input:1.5,output:2}},b={humanName:"GPT-4 32k",encoding:"cl100k_base",description:"Snapshot of gpt-4 from June 13th 2023 with improved function calling support.",shutdownDate:"2025-06-06",recommendedReplacement:"gpt-4o",context:32768,maxOutput:16384,trainingData:"2021-09",cost:{input:60,output:120,batchInput:30,batchOutput:60}},y={humanName:"GPT-4 Vision Preview",encoding:"cl100k_base",description:"Vision capabilities preview of GPT-4.",shutdownDate:"2024-12-06",recommendedReplacement:"gpt-4o",context:128e3,maxOutput:4096,trainingData:"2023-12",cost:{input:10,output:30,batchInput:5,batchOutput:15}},f=y,_={humanName:"Code Davinci 001",encoding:"p50k_base",description:"Older coding model.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},v={humanName:"Code Cushman 001",encoding:"p50k_base",description:"Older model for coding tasks.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},S={...b,humanName:"GPT-4 32k 0314"};t.chatEnabledModels={o1:n,"o1-2024-12-17":n,"o1-preview":r,"o1-preview-2024-09-12":r,"o1-mini":o,"o1-mini-2024-09-12":o,"o3-mini":{humanName:"OpenAI o3-mini",description:"Small cost-efficient reasoning model that's optimized for coding, math, and science, and supports tools and Structured Outputs.",encoding:"o200k_base",context:2e5,maxOutput:65536,trainingData:"2023-10",cost:{input:1.1,output:4.4,batchInput:.55,batchOutput:2.2,cachedInput:.55}},"chatgpt-4o-latest":{humanName:"ChatGPT 4o Latest",description:"The chatgpt-4o-latest model version continuously points to the version of GPT-4o used in ChatGPT, and is updated frequently when there are significant changes.",encoding:"o200k_base",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:5,output:15}},"gpt-4o":a,"gpt-4o-2024-11-20":{humanName:"GPT-4o (Nov 2024)",description:"November 2024 snapshot of the GPT-4o model with enhanced capabilities.",encoding:"o200k_base",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:2.5,output:10,batchInput:1.25,batchOutput:5,cachedInput:1.25}},"gpt-4o-2024-08-06":a,"gpt-4o-2024-05-13":{humanName:"GPT-4o",description:"Original gpt-4o snapshot from May 13, 2024, offering advanced multimodal capabilities.",encoding:"o200k_base",context:128e3,maxOutput:4096,trainingData:"2023-10",cost:{input:5,output:15,batchInput:2.5,batchOutput:7.5}},"gpt-4o-mini":i,"gpt-4o-mini-2024-07-18":i,"gpt-4o-realtime-preview":{humanName:"GPT-4o Realtime Preview",encoding:"o200k_base",description:"Preview release for the Realtime API.",context:128e3,maxOutput:4096,trainingData:"2023-10",cost:{input:5,output:20,cachedInput:2.5}},"gpt-4o-realtime-preview-2024-10-01":{humanName:"GPT-4o Realtime Preview (Oct 2024)",encoding:"o200k_base",description:"Current snapshot for the Realtime API model.",context:128e3,maxOutput:4096,trainingData:"2023-10",cost:{input:5,output:20,cachedInput:2.5}},"gpt-4o-realtime-preview-2024-12-17":{humanName:"GPT-4o Realtime Preview (Dec 2024)",encoding:"o200k_base",description:"December 2024 snapshot for the Realtime API model.",context:128e3,maxOutput:4096,trainingData:"2023-10",cost:{input:5,output:20,cachedInput:2.5}},"gpt-4o-mini-realtime-preview":s,"gpt-4o-mini-realtime-preview-2024-12-17":s,"gpt-4o-audio-preview":{humanName:"GPT-4o Audio Preview",encoding:"o200k_base",description:"Preview release for audio inputs in chat completions.",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:2.5,output:10}},"gpt-4o-audio-preview-2024-10-01":{humanName:"GPT-4o Audio Preview (Oct 2024)",encoding:"o200k_base",description:"Current snapshot for the Audio API model.",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:2.5,output:10}},"gpt-4o-audio-preview-2024-12-17":{humanName:"GPT-4o Audio Preview (Dec 2024)",encoding:"o200k_base",description:"December 2024 snapshot for the Audio API model.",context:128e3,maxOutput:16384,trainingData:"2023-10",cost:{input:2.5,output:10}},"gpt-4o-mini-audio-preview":l,"gpt-4o-mini-audio-preview-2024-12-17":l,"gpt-4o-2024-08-06-finetune":{humanName:"GPT-4o 2024-08-06 Finetuning",description:"GPT-4o finetuned for custom tasks.",encoding:"o200k_base",cost:{input:3.75,output:15,batchInput:1.875,batchOutput:7.5,cachedInput:1.875,training:25}},"gpt-4o-mini-2024-07-18-finetune":{humanName:"GPT-4o Mini 2024-07-18 Finetuning",description:"GPT-4o mini finetuned for custom tasks.",encoding:"o200k_base",cost:{input:.3,output:1.2,batchInput:.15,batchOutput:.6,cachedInput:.15,training:3}},"gpt-4o-mini-training":c,"gpt-4o-mini-training-2024-07-18":c,"davinci-002-finetune":{humanName:"Davinci-002 Finetuning",description:"Davinci-002 finetuned for custom tasks.",encoding:"p50k_base",cost:{input:12,output:12,batchInput:6,batchOutput:6,training:6}},"babbage-002-finetune":{humanName:"Babbage-002 Finetuning",description:"Babbage-002 finetuned for custom tasks.",encoding:"p50k_base",cost:{input:1.6,output:1.6,batchInput:.8,batchOutput:.8,training:.4}},"gpt-4-turbo":d,"gpt-4-turbo-2024-04-09":d,"gpt-4-turbo-preview":p,"gpt-4-0125-preview":p,"gpt-4-1106-preview":m,"gpt-4":u,"gpt-4-0613":u,"gpt-3.5-turbo":g,"gpt-3.5-turbo-0125":g,"gpt-3.5-turbo-1106":{humanName:"GPT-3.5 Turbo 1106",description:"GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more.",encoding:"cl100k_base",context:16385,maxOutput:4096,trainingData:"2021-09",cost:{input:1,output:2,batchInput:.5,batchOutput:1}},"gpt-3.5-turbo-finetune":{humanName:"GPT-3.5 Turbo Finetuning",description:"Finetuning GPT-3.5 Turbo with custom data.",encoding:"cl100k_base",cost:{input:3,output:6,batchInput:1.5,batchOutput:3,training:8}},"gpt-3.5-turbo-16k":{humanName:"GPT-3.5 Turbo 16k",description:"GPT-3.5 model with 16k token context.",encoding:"cl100k_base",cost:{input:3,output:4,batchInput:1.5,batchOutput:2}},"gpt-4-32k":b,"gpt-4-32k-0613":b,"gpt-4-vision-preview":y,"gpt-4-1106-vision-preview":f,"gpt-4-0314":{humanName:"GPT-4 0314",encoding:"cl100k_base",description:"Variant of GPT-4 model.",shutdownDate:"2024-06-13",recommendedReplacement:"gpt-4o",context:8192,maxOutput:8192,trainingData:"2021-09",cost:{input:30,output:60}},"gpt-4-32k-0314":S,"gpt-3.5-turbo-0613":{humanName:"GPT-3.5 Turbo 0613",encoding:"cl100k_base",description:"Version of GPT-3.5 Turbo from June 2013.",shutdownDate:"2024-09-13",recommendedReplacement:"gpt-3.5-turbo",context:16385,maxOutput:4096,trainingData:"2021-09",cost:{input:1.5,output:2,batchInput:.75,batchOutput:1}},"gpt-3.5-turbo-16k-0613":{humanName:"GPT-3.5 Turbo 16k 0613",encoding:"cl100k_base",description:"16k context version from June 2013.",shutdownDate:"2024-09-13",recommendedReplacement:"gpt-3.5-turbo",context:16385,maxOutput:4096,trainingData:"2021-09",cost:{input:3,output:4,batchInput:1.5,batchOutput:2}},"gpt-3.5-turbo-0301":{humanName:"GPT-3.5 Turbo 0301",encoding:"cl100k_base",description:"Earlier version of GPT-3.5 Turbo.",shutdownDate:"2024-09-13",recommendedReplacement:"gpt-3.5-turbo",context:16385,maxOutput:4096,trainingData:"2021-09",cost:{input:1.5,output:2,batchInput:.75,batchOutput:1}}},t.models={...t.chatEnabledModels,"text-embedding-3-small":{humanName:"Text Embedding 3 Small",description:"Embedding model for small-scale applications.",encoding:"cl100k_base",maxInput:8191,cost:{input:.02,batchInput:.01}},"text-embedding-3-large":{humanName:"Text Embedding 3 Large",description:"Embedding model for large-scale applications.",encoding:"cl100k_base",maxInput:8191,cost:{input:.13,batchInput:.065}},"text-embedding-ada-002":{humanName:"Ada v2",description:"A versatile model suitable for text embeddings and lightweight NLP tasks.",encoding:"cl100k_base",maxInput:8191,cost:{input:.1,output:0,batchInput:.05,batchOutput:0}},"gpt-3.5-turbo-instruct":h,"gpt-3.5-turbo-instruct-0914":h,"davinci-002":{humanName:"Davinci 002",description:"Replacement for the GPT-3 curie and davinci base models.",encoding:"p50k_base",context:16384,maxOutput:16384,trainingData:"2021-09",cost:{input:2,output:2,batchInput:1,batchOutput:1}},"babbage-002":{humanName:"Babbage 002",description:"Replacement for the GPT-3 ada and babbage base models.",encoding:"p50k_base",context:16384,trainingData:"2021-09",cost:{input:.4,output:.4,batchInput:.2,batchOutput:.2}},"text-ada-001":{humanName:"Text Ada 001",encoding:"r50k_base",description:"Model for lightweight tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:.4}},"text-babbage-001":{humanName:"Text Babbage 001",encoding:"r50k_base",description:"Model for efficient processing.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:.5}},"text-curie-001":{humanName:"Text Curie 001",encoding:"r50k_base",description:"Mid-range model for various tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:2}},"text-davinci-001":{humanName:"Text Davinci 001",encoding:"r50k_base",description:"High-performance model for complex tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:20}},"text-davinci-002":{humanName:"Text Davinci 002",encoding:"p50k_base",description:"Legacy high-performance model.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:20}},"text-davinci-003":{humanName:"Text Davinci 003",encoding:"p50k_base",description:"Latest of the Davinci series.",shutdownDate:"2024-01-04",recommendedReplacement:"gpt-3.5-turbo-instruct",cost:{input:20}},ada:{humanName:"Ada",encoding:"r50k_base",description:"Base model for lightweight tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"babbage-002",cost:{input:.4}},babbage:{humanName:"Babbage",encoding:"r50k_base",description:"Model for efficient processing.",shutdownDate:"2024-01-04",recommendedReplacement:"babbage-002",cost:{input:.5}},curie:{humanName:"Curie",encoding:"r50k_base",description:"Mid-range model for a variety of applications.",shutdownDate:"2024-01-04",recommendedReplacement:"davinci-002",cost:{input:2}},davinci:{humanName:"Davinci",encoding:"p50k_base",description:"High-performance legacy model.",shutdownDate:"2024-01-04",recommendedReplacement:"davinci-002",cost:{input:20}},"code-davinci-002":{humanName:"Code Davinci 002",encoding:"p50k_base",description:"Legacy coding model.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},"code-davinci-001":_,"davinci-codex":_,"code-davinci-edit-001":{humanName:"Code Davinci 001",encoding:"p50k_edit",description:"Older coding model.",shutdownDate:"2023-03-23"},"code-cushman-002":{humanName:"Code Cushman 002",encoding:"p50k_base",description:"Legacy model for coding.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},"code-cushman-001":v,"cushman-codex":v,"code-search-ada-code-001":{humanName:"Code Search Ada Code 001",encoding:"r50k_base",description:"Embedding model for code search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:4}},"code-search-ada-text-001":{humanName:"Code Search Ada Text 001",encoding:"r50k_base",description:"Embedding model for text search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:4}},"text-davinci-edit-001":{humanName:"Text Davinci 001",encoding:"p50k_edit",description:"Older text model.",shutdownDate:"2023-03-23"},"text-similarity-ada-001":{humanName:"Text Similarity Ada 001",encoding:"r50k_base",description:"Embedding model for similarity tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:4}},"text-search-ada-doc-001":{humanName:"Text Search Ada Doc 001",encoding:"r50k_base",description:"Embedding model for document search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:4}},"text-search-ada-query-001":{humanName:"Text Search Ada Query 001",encoding:"r50k_base",description:"Embedding model for query search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:4}},"text-similarity-babbage-001":{humanName:"Text Similarity Babbage 001",encoding:"r50k_base",description:"Embedding model for similarity tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:5}},"text-search-babbage-doc-001":{humanName:"Text Search Babbage Doc 001",encoding:"r50k_base",description:"Embedding model for document search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:5}},"text-search-babbage-query-001":{humanName:"Text Search Babbage Query 001",encoding:"r50k_base",description:"Embedding model for query search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:5}},"code-search-babbage-code-001":{humanName:"Code Search Babbage Code 001",encoding:"r50k_base",description:"Embedding model for code search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:5}},"code-search-babbage-text-001":{humanName:"Code Search Babbage Text 001",encoding:"r50k_base",description:"Embedding model for text search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:5}},"text-similarity-curie-001":{humanName:"Text Similarity Curie 001",encoding:"r50k_base",description:"Embedding model for similarity tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:20}},"text-search-curie-doc-001":{humanName:"Text Search Curie Doc 001",encoding:"r50k_base",description:"Embedding model for document search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:20}},"text-search-curie-query-001":{humanName:"Text Search Curie Query 001",encoding:"r50k_base",description:"Embedding model for query search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:20}},"text-similarity-davinci-001":{humanName:"Text Similarity Davinci 001",encoding:"r50k_base",description:"Embedding model for similarity tasks.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:200}},"text-search-davinci-doc-001":{humanName:"Text Search Davinci Doc 001",encoding:"r50k_base",description:"Embedding model for document search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:200}},"text-search-davinci-query-001":{humanName:"Text Search Davinci Query 001",encoding:"r50k_base",description:"Embedding model for query search.",shutdownDate:"2024-01-04",recommendedReplacement:"text-embedding-3-small",cost:{input:200}}}},795:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EndOfPrompt=t.ImSep=t.ImEnd=t.ImStart=t.FimSuffix=t.FimMiddle=t.FimPrefix=t.EndOfText=void 0,t.EndOfText="<|endoftext|>",t.FimPrefix="<|fim_prefix|>",t.FimMiddle="<|fim_middle|>",t.FimSuffix="<|fim_suffix|>",t.ImStart="<|im_start|>",t.ImEnd="<|im_end|>",t.ImSep="<|im_sep|>",t.EndOfPrompt="<|endofprompt|>"},995:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isAscii=void 0,t.endsWithIncompleteUtfPairSurrogate=function(e){if(0===e.length)return!1;const t=e.charCodeAt(e.length-1);return t>=a&&t<=i},t.tryConvertToString=function(e){if(function(e){let t=0;for(;t<e.length;){const a=e[t];let i=0,n=0;if(a<=127)i=1,n=a;else if(192==(224&a)){if(i=2,n=31&a,a<=193)return!1}else if(224==(240&a))i=3,n=15&a;else{if(240!=(248&a))return!1;if(i=4,n=7&a,a>244)return!1}if(t+i>e.length)return!1;for(let a=1;a<i;a++){const i=e[t+a];if(void 0===i||128!=(192&i))return!1;n=n<<6|63&i}if(2===i&&n<128)return!1;if(3===i&&n<2048)return!1;if(4===i&&n<65536)return!1;if(n>=55296&&n<=57343)return!1;if(n>1114111)return!1;t+=i}return!0}(e))return n.decode(e)},t.compareUint8Arrays=function(e,t){const a=Math.min(e.length,t.length);for(let i=0;i<a;i++)if(e[i]!==t[i])return e[i]-t[i];return e.length-t.length},t.isAscii=e=>e<=127;const a=55296,i=56319,n=new TextDecoder("utf8",{fatal:!1})},462:(e,t)=>{function a(e){return e.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&")}Object.defineProperty(t,"__esModule",{value:!0}),t.getMaxValueFromMap=function(e){let t=0;return e.forEach((e=>{t=Math.max(t,e)})),t},t.escapeRegExp=a,t.getSpecialTokenRegex=function(e){const t=[...e].map(a).join("|");return new RegExp(`(${t})`)}},896:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});const i=["!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~",[161],[162],[163],[164],[165],[166],[167],[168],[169],[170],[171],[172],[174],[175],[176],[177],[178],[179],[180],[181],[182],[183],[184],[185],[186],[187],[188],[189],[190],[191],[192],[193],[194],[195],[196],[197],[198],[199],[200],[201],[202],[203],[204],[205],[206],[207],[208],[209],[210],[211],[212],[213],[214],[215],[216],[217],[218],[219],[220],[221],[222],[223],[224],[225],[226],[227],[228],[229],[230],[231],[232],[233],[234],[235],[236],[237],[238],[239],[240],[241],[242],[243],[244],[245],[246],[247],[248],[249],[250],[251],[252],[253],[254],[255],"\0","","","","","","","","\b","\t","\n","\v","\f","\r","","","","","","","","","","","","","","","","","",""," ","",[128],[129],[130],[131],[132],[133],[134],[135],[136],[137],[138],[139],[140],[141],[142],[143],[144],[145],[146],[147],[148],[149],[150],[151],[152],[153],[154],[155],[156],[157],[158],[159],[160],[173]," "," ","in"," t"," ","er"," ","on"," a","re","at","st","en","or"," th","\n\n"," c","le"," s","it","an","ar","al"," the",";\n"," p"," f","ou"," =","is"," ","ing","es"," w","ion","ed","ic"," b"," d","et"," m"," o","\t\t","ro","as","el","ct","nd"," in"," h","ent","id"," n","am"," "," to"," re","--"," {"," of","om",");\n","im","\r\n"," (","il","//"," and","ur","se"," l","ex"," S","ad",' "',"ch","ut","if","**"," }","em","ol"," ","th",")\n"," {\n"," g","ig","iv",",\n","ce","od"," v","ate"," T","ag","ay"," *","ot","us"," C"," st"," I","un","ul","ue"," A","ow"," '","ew"," <","ation","()"," for","ab","ort","um","ame"," is","pe","tr","ck",[226,128]," y","ist","----",".\n\n","he"," e","lo"," M"," be","ers"," on"," con","ap","ub"," P"," ","ass","int",">\n","ly","urn"," $",";\n\n","av","port","ir","->","nt","ction","end"," de","00","ith","out","turn","our"," ","lic","res","pt","=="," this"," wh"," if"," D","ver","age"," B","ht","ext",'="'," that","****"," R"," it","ess"," F"," r","os","and"," as","ect","ke","rom"," //","con"," L",'("',"qu","lass"," with","iz","de"," N"," al","op","up","get"," }\n","ile"," an","ata","ore","ri"," pro",";\r\n","\t\t\t\t","ter","ain"," W"," E"," com"," return","art"," H","ack","import","ublic"," or","est","ment"," G","able"," -","ine","ill","ind","ere","::","ity"," +"," tr","elf","ight","('","orm","ult","str","..",'",'," you","ype","pl"," new"," j"," "," from"," ex"," O","20","ld"," [","oc",":\n"," se"," le","--------",".s","{\n","',","ant"," at","ase",".c"," ch","</","ave","ang"," are"," int","’","_t","ert","ial","act","}\n","ive","ode","ost"," class"," not","og","ord","alue","all","ff","();\n","ont","ime","are"," U"," pr"," :","ies","ize","ure"," by","ire"," }\n\n",".p"," sh","ice","ast","ption","tring","ok","__","cl","##"," he","ard",")."," @","iew","\t\t\t"," was","ip","this"," u"," The","ide","ace","ib","ac","rou"," we","ject"," public","ak","ve","ath","oid"," =>","ust","que"," res","))","'s"," k","ans","yst","unction","********"," i"," us","pp","10","one","ail","====","name"," str"," /"," &","ach","div","ystem","ell"," have","err","ould","ull","pon"," J","_p"," ==","ign","St",".\n"," pl",");\n\n","form","put","ount","}\n\n","dd","ite"," get","rr","ome",[32,226,128],"aram","cc"," */","ER","In","les","_s","ong","ie"," can"," V","erv","pr"," un","row","ber"," do","ll"," el"," self","ated","ary"," .","']","ud"," en"," Th"," ","te","_c","uct"," ab","ork",".get"," #","aw","ress","ob","Name","201","app","['"," all","ory","ition","ance","ear"," cont","vent","ia"," will","IN"," ","return"," </","data",")\n\n","Re","ple","ild","ther"," your",'"\n',"($"," out","),"," has","String","so"," up","ax"," def"," bo","ge","alse","ON","per","12","ich"," but"," \n"," _","_m","add","quest","odel","self","ery","ft","ens","////","ake",".C"," go"," function"," K","ivate"," im"," const",".t"," */\n",");\r\n"," void"," set"," System","cri","()\n","li","\tif",".m","ally","set","ep","’s","bo","def","',\n"," me"," !","atch",'">','",\n',"ec"," In","ph"," |","_f"," var","ence","Id","ree","ink","lect","ug","eth"," else","----------------","19","cont"," so","atic"," lo","pro","ton","ss","own","abel","oint","ous","eld","ST","The"," ","RE",'":',"olor","tp","eg","key","ude"," St","ound"," ar",'");\n',"ener","ser","11","bject","essage","fer"," more","ations","ents"," his"," they",".S"," Y","use","ne","ish","old","_d","io","ield"," per","Cont","ings","####"," data"," sa","ef","fo"," one","eng"," dis","AT"," name"," true","val","led",".f"," ne"," end","32",".T","16","cre","ark","log","Ex","error","_id","urre","ange"," null","rray"," my","pan","ict","ator","View","List","\treturn","”"," pre"," x","clude","arg","15","ov",".h"," >"," their","')","irst","ick","gh","LE","OR"," private","tem","\r\n\r\n","user"," )","com",".A",'";\n'," id","read"," who","_b",'">\n'," time"," man","ry","========","roup","rop","public","vel","umber","ble"," which","****************"," any"," false","we"," value"," li",'")',"nder","gr"," no","param","25","fig",".com"," app","_l","ions",".D"," Ch"," about"," add"," su"," string","ID"," over","string",".l","ource","000","_C","]\n"," qu"," String","ca","SE"," ro","sh","ual","Type","son","new","ern"," ag","AR","];\n","]."," ?","ical"," des","uth","ix","ays"," type","'t","ault"," inter","var",".b"," part",".d","urrent","IT","EN","30","enc","(f","ra","value","cho","18","utton","ose","14"," !=","ater","é","reate","oll","pos","yle","ng","AL","using","ames"," {\r\n","ates","ely"," work"," em","inal"," sp"," when",".set"," ","):\n","to","quire","indow","lement","pect","ash","[i"," use",".F","pec"," ad","ove","ception","ength","include","ader"," ","atus","Th","itle","rit","void","().","(\n"," off"," other"," &&","';\n","ms"," been"," te","ml","co","nc","13","ervice"," %","**\n","ann","ade","\n\n\n\n","lock","const","100","ponse"," sup","++","date"," acc"," had"," bu","200"," Re"," were"," file"," would"," “","ven","iss"," our","class","raw"," year","Data"," val"," some","fter","ys"," ///","round","view"," pe"," there"," said","du","of","line","/*","duct"," her"," ","Res"," co"," comm","ise","min"," \n","#include","ethod",".P","ute"," ass","Int","ask","loc"," like","ody"," let","load"," am","rol"," gr","yp"," also"," It","url","ific","ors","_P","_n","igh"," than","Com","AN","UL","ating","17"," This","ref","_S"," static","roll"," just"," result","ian","idth"," them","));\n","der","reak","Con","://","ule","...","arch","ement"," <<","50","ush","ense","arr"," into","cess","amp","ied","ument"," \\","],","wo","als"," what","anc","Value","='","olum"," pos","ages","ayer"," sc","ues",'")\n',"_T"," list","(s"," case","Ch","\t\t\t\t\t","////////","ponent"," z"," kn","let","DE","red"," fe"," },\n"," ,","(t"," first","');\n","word"," import"," act"," char","CT"," Tr","ople","={","\tf","24","ient","cent",".j","lection","))\n"," only"," print","mer",".W","ock"," --","Text"," op","ank"," its"," back",'["'," need"," cl"," sub"," la","((",'."',"Object"," start","file","(self","ner","ey"," user"," ent"," Com","its"," Con","ouble","ower","item","very"," We","64","lick"," Q","php","ttp","':","ics"," under"," *\n",".L",");","ices"," reg",")\r\n","\tpublic","SS"," then","reat","ious",".G","ek","irect","heck","cript","ning"," Un"," may"," Wh","Bo","Item","struct",".st","ream","ible","loat"," org","und","sum","_in","../","_M"," how","rite","'\n","To","40","ww"," people","index",".n","http","(m","ector"," ind"," jav","],\n"," He","_st","ful","ole","){\n"," should","opy","elp","ier","_name","erson","ION","ote"," test"," bet","rror","ular",[227,128],[32,208],"bs","ting"," make","Tr"," after","arget","RO","olumn","rc","_re","define","22"," right","right","day"," long","[]","(p","td","cond"," Pro"," rem","ptions","vid",".g"," ext"," __","')\n","pace","mp"," min","stance","air","action","wh","type","util","ait","<?","IC","text"," ph"," fl",".M","ccess","br","fore","ersion","),\n",".re","ateg"," loc","ins","-s","trib"," Int"," array",',"',"Pro","(c","ession",">\n\n"," she",'"]',"aph"," exp","erty"," Se"," par","unc","ET"," read","print"," rel"," form"," dr","Exception","input"," trans","########","order","By"," aw","ities","uff","play",".add"," –"," want"," comp","ments"," ||","az","be"," number"," require"," Ex","60"," col"," key","ember"," two"," size"," where","UT","result"," ","ough","orld","ood","uch","ative","ger","arent"," /*"," arg"," while","23","(this"," rec"," dif","State"," spec","ride","_F"," look","AM","ility","eter","’t","\n\n\n","ayout","--------------------------------","ager"," could"," br","ends","ures"," know","ets"," If"," Sh",".w","back"," ser"," +="," fr","());\n"," hand","Ind","ULL","Im","();\n\n"," most"," try"," now","rough",">\r\n","ackage"," him","._","ify"," break"," );\n","ren","#define","itt"," ap","\tc","(n"," You",":\n\n","-m"," every","ustom","lient","ocument","cription","Error","-b","о","][","99","trans"," point"," std"," fil","Time","80"," mod"," ->"," error","ah"," text","roller","lose","ql"," pol","></"," show","User","ased"," {\n\n"," find","а","ED","span","enu"," current"," used","cept","clud"," play"," log","ution","fl"," see","indows"," help"," these"," pass"," down"," even","ason","uild","from","(d"," bl","label","else","е"," (!","ized","(),"," ob"," item","ump","UR","orn"," don","Se","man","27","ample","tn","================","He","gram"," did","wn","_h","iver"," sm"," through"," An","che"," inv","ouse"," es"," New","export","mary","uto","ler"," last"," event","try",[239,188],"ily","igned","ines","ollow","icense","sole","lear","(int"," again"," high","html","Index","uthor"," /**\n"," line","Event","_D"," does","itial"," cr","ars","28"," tem","cause","face"," `","_A","Button","ature","ected","ES","ister","\t\n"," before","ale","other"," because","roid"," ed","ik","reg"," De"," dist","},\n"," state"," cons","rint","att"," here","ined"," final",' ""',"Key","LO"," del","pty","thing","26"," And"," run"," X","ym",".app"," very","ces","_N","ared","ward","list","ited","olog","itch","Box","ife","33"," ac"," model"," mon"," way","lete"," call"," att"," cal","vert"," dec","lease","oun"," });\n","fr","formation","etail"," num","aj","query"," well"," object"," As"," years","Color","IS"," default","Wh"," ins","aint"," java"," sim"," Ar","mon","til","();\r\n","):","Set","29","atter"," view"," pres","array","We","At"," bel"," many","21","Man","ender"," being"," good","\t\t\t\t\t\t","ational","ware",".log","{\r\n"," using","_B"," :=","_w","ists","lish"," stud"," Al"," gu","config","uring","time","oken","amespace"," request"," child",[32,195],"lob"," param"," }\r\n","01"," echo","function","********************************","ps","Element","alk","lication","by","Size","rawing"," person"," ","\\n","object","ince","En","File","uf","ffect","AC"," style","summary"," que","_r"," ($","Model","ident"," method","IL","ott","less","ING"," ()"," expect","ync","package","35","urs"," prot","./","pre"," )\n","ma"," sur"," found","Info","par","imes",".e","ains"," post","-d","45","olean"," sl","PE"," such","select","ainer"," think"," differ",".r","/**\n","FF","ool","plate","qual"," For"," much","uc","(new","odule"," som"," http"," List"," count"," inst","char","mit",".id","aking"," gener","px","vice","37","_data"," NULL","}\r\n","idd",