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 • 2.06 MB
JavaScript
!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define("GPTTokenizer_o200k_base",[],a):"object"==typeof exports?exports.GPTTokenizer_o200k_base=a():e.GPTTokenizer_o200k_base=a()}(globalThis,(()=>(()=>{"use strict";var e={626:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.BytePairEncodingCore=a.decoder=void 0;const n=i(242),r=i(995),t=i(462),o=new Uint8Array(0);a.decoder=new TextDecoder("utf8"),a.BytePairEncodingCore=class{mergeableBytePairRankCount;bytePairRankDecoder;bytePairNonUtfRankDecoder=new Map;bytePairNonUtfSortedEncoder;bytePairStringRankEncoder;tokenSplitRegex;specialTokensEncoder;specialTokensDecoder;specialTokenPatternRegex;textEncoder=new TextEncoder;mergeCache;mergeCacheSize;constructor({bytePairRankDecoder:e,specialTokensEncoder:a,tokenSplitRegex:i,mergeCacheSize:o=n.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,a)=>{if("string"==typeof e)return void this.bytePairStringRankEncoder.set(e,a);const i=new Uint8Array(e);s.push([i,a]),this.bytePairNonUtfRankDecoder.set(a,i)})),this.bytePairNonUtfSortedEncoder=s.sort(((e,a)=>(0,r.compareUint8Arrays)(e[0],a[0]))),this.specialTokensEncoder=a??new Map,this.specialTokensDecoder=a?new Map([...a].map((([e,a])=>[a,e]))):new Map,this.tokenSplitRegex=i;const l=[...this.specialTokensEncoder.keys()].map(t.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,a){let i=0,n=0;for(;;){const r=this.findNextSpecialToken(e,a,i),t=r?.[0],o=t??e.length,s=0===i&&o===e.length?e:e.slice(i,o);for(const[e]of s.matchAll(this.tokenSplitRegex)){const a=this.getBpeRankFromString(e);if(void 0!==a){n=1,yield[a];continue}const i=this.bytePairEncode(e);n=i.length,yield i}if(void 0===t)break;{const e=r[1],a=this.specialTokensEncoder.get(e);if(void 0===a)throw new Error(`Special token "${e}" is not in the special token encoder.`);yield[a],i=t+e.length,n=1}}return n}encodeNative(e,a){let i=0;const n=[];for(;;){const r=this.findNextSpecialToken(e,a,i),t=r?.[0],o=t??e.length,s=0===i&&o===e.length?e:e.slice(i,o);for(const[e]of s.matchAll(this.tokenSplitRegex)){const a=this.getBpeRankFromString(e);if(void 0!==a){n.push(a);continue}const i=this.bytePairEncode(e);n.push(...i)}if(void 0===t)break;{const e=r[1],a=this.specialTokensEncoder.get(e);if(void 0===a)throw new Error(`Special token "${e}" is not in the special token encoder.`);n.push(a),i=t+e.length}}return n}countNative(e,a){let i=0,n=0;for(;;){const r=this.findNextSpecialToken(e,a,i),t=r?.[0],o=t??e.length,s=0===i&&o===e.length?e:e.slice(i,o);for(const[e]of s.matchAll(this.tokenSplitRegex))void 0===this.getBpeRankFromString(e)?n+=this.bytePairEncode(e).length:n++;if(void 0===t)break;{const e=r[1];if(void 0===this.specialTokensEncoder.get(e))throw new Error(`Special token "${e}" is not in the special token encoder.`);n++,i=t+e.length}}return n}*decodeNativeGenerator(e){for(const a of e){const e=this.tryDecodeToken(a);e&&(yield e)}}decodeNative(e){let i="",n=o;for(const r of e){const e=this.tryDecodeToken(r);if(void 0===e)throw new Error(`Token ${r} is not in the byte pair encoder.`);if("string"==typeof e)n!==o&&(i+=a.decoder.decode(n,{stream:!0}),n=o),i+=e;else{const a=new Uint8Array(n.length+e.length);a.set(n),a.set(e,n.length),n=a}}return n!==o&&(i+=a.decoder.decode(n,{stream:!0})),i}async*decodeNativeAsyncIterable(e){for await(const a of e){const e=this.tryDecodeToken(a);e&&(yield e)}}getBpeRankFromString(e){return this.bytePairStringRankEncoder.get(e)}getBpeRankFromStringOrThrow(e){const a=this.getBpeRankFromString(e);if(void 0===a)throw new Error(`The byte-pair encoding does not contain a value for: ${e}`);return a}getBpeRankFromBytes(e){const a=(0,r.tryConvertToString)(e);if(void 0!==a)return this.getBpeRankFromString(a);const i=this.binarySearch(e);return-1!==i?this.bytePairNonUtfSortedEncoder[i][1]:void 0}getBpeRankFromBytesOrThrow(e){const a=this.getBpeRankFromBytes(e);if(void 0===a)throw new Error(`The byte-pair encoding does not contain a value for: ${e.toString()}`);return a}binarySearch(e){let a=0,i=this.bytePairNonUtfSortedEncoder.length-1;for(;a<=i;){const n=a+i>>>1,r=this.bytePairNonUtfSortedEncoder[n][0];let t=0;const o=Math.min(r.length,e.length);for(let a=0;a<o&&(t=r[a]-e[a],0===t);a++);if(0===t&&(t=r.length-e.length),0===t)return n;t<0?a=n+1:i=n-1}return-1}findNextSpecialToken(e,a,i){let n=i;for(;;){this.specialTokenPatternRegex.lastIndex=n;const i=this.specialTokenPatternRegex.exec(e);if(!i)return;const r=i[0];if(a?.has(r))return[i.index+n,r];n=i.index+n+1}}tryDecodeToken(e){const a=this.bytePairRankDecoder[e];if("string"==typeof a)return a;if("object"==typeof a){const a=this.bytePairNonUtfRankDecoder.get(e);if(a)return a}return this.specialTokensDecoder.get(e)}addToMergeCache(e,a){if(this.mergeCache){if(this.mergeCache.size>=this.mergeCacheSize){const e=this.mergeCache.keys().next().value;this.mergeCache.delete(e)}this.mergeCache.set(e,a)}}bytePairEncode(e){if(1===e.length&&(0,r.isAscii)(e.codePointAt(0)))return[this.getBpeRankFromStringOrThrow(e)];if(this.mergeCache?.has(e)){const a=this.mergeCache.get(e);return this.mergeCache.delete(e),this.mergeCache.set(e,a),a}const a=this.textEncoder.encode(e),i=this.bytePairMerge(a);return this.addToMergeCache(e,i),i}bytePairMerge(e){const a=[],i=[],n=(i,n=a[i],r=a[i+2])=>{if(void 0===r)return Number.POSITIVE_INFINITY;const t=e.subarray(n,r);return this.getBpeRankFromBytes(t)??Number.POSITIVE_INFINITY};for(let r=0;r<=e.length;r++)a.push(r),r<e.length-1?i.push(n(r,r,r+2)):i.push(Number.POSITIVE_INFINITY);for(;a.length>1;){let e=Number.POSITIVE_INFINITY,r=-1;for(let a=0;a<i.length-1;a++){const n=i[a];n<e&&(e=n,r=a)}if(e===Number.POSITIVE_INFINITY||-1===r)break;a.splice(r+1,1),i.splice(r,1),i[r]=n(r),r>0&&(i[r-1]=n(r-1))}const r=[];for(let i=0;i<a.length-1;i++){const n=a[i],t=a[i+1],o=this.getBpeRankFromBytesOrThrow(e.subarray(n,t));r.push(o)}return r}}},945:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.GptEncoding=void 0;const n=i(626),r=i(242),t=i(179),o=i(177),s=i(778),l=i(795),c=i(995),d=i(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:a,expectedVocabularySize:i,modelName:r,...t}){this.specialTokensEncoder=a,this.specialTokensSet=new Set(this.specialTokensEncoder.keys()),this.allSpecialTokenRegex=(0,d.getSpecialTokenRegex)(this.specialTokensSet),this.bytePairEncodingCoreProcessor=new n.BytePairEncodingCore({bytePairRankDecoder:e,specialTokensEncoder:a,...t}),this.defaultSpecialTokenConfig=this.processSpecialTokens();const o=Math.max(e.length-1,(0,d.getMaxValueFromMap)(a));if(this.vocabularySize=this.bytePairEncodingCoreProcessor.mergeableBytePairRankCount+a.size,void 0!==i){if(this.vocabularySize!==i)throw new Error("The number of mergeable tokens and special tokens must be equal to expectedVocabularySize.");if(o!==i-1)throw new Error(`The model encodings are invalid. The maximum token value must be equal to expectedVocabularySize - 1. Currently ${o}, expected ${i-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=r}static getEncodingApi(e,a){const i=(0,o.getEncodingParams)(e,a);return new u(i)}static getEncodingApiForModel(e,a){const i=t.modelToEncodingMap[e],n=(0,o.getEncodingParams)(i,a);return new u({...n,modelName:e})}processSpecialTokens({allowedSpecial:e,disallowedSpecial:a}={}){let i;if(e===r.ALL_SPECIAL_TOKENS||e?.has(r.ALL_SPECIAL_TOKENS)){const i=e=new Set(this.specialTokensSet);if(a===r.ALL_SPECIAL_TOKENS)throw new Error('allowedSpecial and disallowedSpecial cannot both be set to "all".');"object"==typeof a?a.forEach((e=>i.delete(e))):a=new Set}if(!a||a===r.ALL_SPECIAL_TOKENS||a.has(r.ALL_SPECIAL_TOKENS)){const n=a=new Set(this.specialTokensSet);e?.size?(e.forEach((e=>n.delete(e))),a.forEach((a=>e.delete(a))),a.size>0&&(i=(0,d.getSpecialTokenRegex)(a))):i=this.allSpecialTokenRegex}return{allowedSpecial:e,regexPattern:i}}encodeGenerator(e,a){const i=a?this.processSpecialTokens(a):this.defaultSpecialTokenConfig;if(i.regexPattern){const a=e.match(i.regexPattern);if(null!==a)throw new Error(`Disallowed special token found: ${a[0]}`)}return this.bytePairEncodingCoreProcessor.encodeNativeGenerator(e,i.allowedSpecial)}encode(e,a){const i=a?this.processSpecialTokens(a):this.defaultSpecialTokenConfig;if(i.regexPattern){const a=e.match(i.regexPattern);if(null!==a)throw new Error(`Disallowed special token found: ${a[0]}`)}return this.bytePairEncodingCoreProcessor.encodeNative(e,i.allowedSpecial)}*encodeChatGenerator(e,a=this.modelName){if(!a)throw new Error("Model name must be provided either during initialization or passed in to the method.");const i=t.chatModelParams[a],n=this.specialTokensEncoder.get(l.ImStart),r=this.specialTokensEncoder.get(l.ImEnd);if(!i||void 0===n||void 0===r)throw new Error(`Model '${a}' does not support chat.`);const o=new Set([l.ImSep]),{messageSeparator:s,roleSeparator:c}=i,d=s.length>0?this.encode(s):[],u=c.length>0?this.encode(c,{allowedSpecial:o}):[],m=new Map;for(const{role:a="system",name:i=a,content:t}of e){if(void 0===t)throw new Error("Content must be defined for all messages.");yield[n];const e=m.get(i)??this.encode(i);m.set(i,e),yield e,u.length>0&&(yield u),yield*this.encodeGenerator(t),yield[r],yield d}yield[n],yield*this.encodeGenerator("assistant"),u.length>0&&(yield u)}encodeChat(e,a=this.modelName){return[...this.encodeChatGenerator(e,a)].flat()}isWithinTokenLimit(e,a){const i="string"==typeof e?this.encodeGenerator(e):this.encodeChatGenerator(e);let n=0;for(const e of i)if(n+=e.length,n>a)return!1;return n}countTokens(e,a){if("string"==typeof e){const i=a?this.processSpecialTokens(a):this.defaultSpecialTokenConfig;if(i.regexPattern){const a=e.match(i.regexPattern);if(null!==a)throw new Error(`Disallowed special token found: ${a[0]}`)}return this.bytePairEncodingCoreProcessor.countNative(e,i.allowedSpecial)}const i=this.encodeChatGenerator(e);let n=0;for(const e of i)n+=e.length;return n}setMergeCacheSize(e){this.bytePairEncodingCoreProcessor.setMergeCacheSize(e)}clearMergeCache(){this.bytePairEncodingCoreProcessor.clearMergeCache()}decode(e){return this.bytePairEncodingCoreProcessor.decodeNative(e)}*decodeGenerator(e){const a=this.bytePairEncodingCoreProcessor.decodeNativeGenerator(e);let i="";for(const e of a)i+="string"==typeof e?e:n.decoder.decode(e,{stream:!0}),0===i.length||(0,c.endsWithIncompleteUtfPairSurrogate)(i)||(yield i,i="");i.length>0&&(yield i)}async*decodeAsyncGenerator(e){const a=this.bytePairEncodingCoreProcessor.decodeNativeAsyncIterable(e);let i="";for await(const e of a)i+="string"==typeof e?e:n.decoder.decode(e,{stream:!0}),0===i.length||(0,c.endsWithIncompleteUtfPairSurrogate)(i)||(yield i,i="");i.length>0&&(yield i)}async decodeAsync(e){const a=this.bytePairEncodingCoreProcessor.decodeNativeAsyncIterable(e);let i="";for await(const e of a)i+="string"==typeof e?e:n.decoder.decode(e,{stream:!0});return i}estimateCost(e,a=this.modelName){if(!a)throw new Error("Model name must be provided either during initialization or passed in to the method.");const i=s.models[a];if(!i)throw new Error(`Unknown model: ${a}`);if(!i.cost)throw new Error(`No cost information available for model: ${a}`);const n=i.cost,r={},t=e/1e6;return void 0!==n.input&&(r.input=n.input*t),void 0!==n.output&&(r.output=n.output*t),void 0!==n.batchInput&&(r.batchInput=n.batchInput*t),void 0!==n.batchOutput&&(r.batchOutput=n.batchOutput*t),r}}a.GptEncoding=u},242:(e,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.DEFAULT_MERGE_CACHE_SIZE=a.ALL_SPECIAL_TOKENS=void 0,a.ALL_SPECIAL_TOKENS="all",a.DEFAULT_MERGE_CACHE_SIZE=1e5},348:function(e,a,i){var n=this&&this.__createBinding||(Object.create?function(e,a,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(a,i);r&&!("get"in r?!a.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return a[i]}}),Object.defineProperty(e,n,r)}:function(e,a,i,n){void 0===n&&(n=i),e[n]=a[i]}),r=this&&this.__exportStar||function(e,a){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(a,i)||n(a,e,i)};Object.defineProperty(a,"__esModule",{value:!0}),a.vocabularySize=a.setMergeCacheSize=a.isWithinTokenLimit=a.estimateCost=a.encodeGenerator=a.encodeChatGenerator=a.encodeChat=a.encode=a.decodeGenerator=a.decodeAsyncGenerator=a.decode=a.countTokens=a.clearMergeCache=void 0;const t=i(797),o=i(945);r(i(242),a),r(i(795),a);const s=o.GptEncoding.getEncodingApi("o200k_base",(()=>t.default)),{decode:l,decodeAsyncGenerator:c,decodeGenerator:d,encode:u,encodeGenerator:m,isWithinTokenLimit:p,countTokens:g,encodeChat:h,encodeChatGenerator:b,vocabularySize:k,setMergeCacheSize:v,clearMergeCache:f,estimateCost:y}=s;a.decode=l,a.decodeAsyncGenerator=c,a.decodeGenerator=d,a.encode=u,a.encodeGenerator=m,a.isWithinTokenLimit=p,a.countTokens=g,a.encodeChat=h,a.encodeChatGenerator=b,a.vocabularySize=k,a.setMergeCacheSize=v,a.clearMergeCache=f,a.estimateCost=y,a.default=s},120:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.Cl100KBase=function(e){const a=new Map([[n.EndOfText,100257],[n.FimPrefix,100258],[n.FimMiddle,100259],[n.FimSuffix,100260],[n.ImStart,100264],[n.ImEnd,100265],[n.ImSep,100266],[n.EndOfPrompt,100276]]);return{tokenSplitRegex:r.CL_AND_O_TOKEN_SPLIT_PATTERN,bytePairRankDecoder:e,specialTokensEncoder:a}};const n=i(795),r=i(417)},417:(e,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.CL_AND_O_TOKEN_SPLIT_PATTERN=a.R50K_TOKEN_SPLIT_REGEX=void 0,a.R50K_TOKEN_SPLIT_REGEX=/'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu,a.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,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.O200KBase=function(e){const a=new Map([[n.EndOfText,199999],[n.FimPrefix,2e5],[n.FimMiddle,200001],[n.FimSuffix,200002],[n.ImStart,200003],[n.ImEnd,200004],[n.ImSep,200005],[n.EndOfPrompt,200006]]);return{tokenSplitRegex:r.CL_AND_O_TOKEN_SPLIT_PATTERN,bytePairRankDecoder:e,specialTokensEncoder:a}};const n=i(795),r=i(417)},398:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.P50KBase=function(e){return{expectedVocabularySize:50281,tokenSplitRegex:r.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:new Map([[n.EndOfText,50256]])}},i(177);const n=i(795),r=i(417)},517:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.P50KEdit=function(e){const a=new Map([[n.EndOfText,50256],[n.FimPrefix,50281],[n.FimMiddle,50282],[n.FimSuffix,50283]]);return{tokenSplitRegex:r.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:a}},i(177);const n=i(795),r=i(417)},401:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.R50KBase=function(e){return{expectedVocabularySize:50257,tokenSplitRegex:r.R50K_TOKEN_SPLIT_REGEX,bytePairRankDecoder:e,specialTokensEncoder:new Map([[n.EndOfText,50256]])}},i(177);const n=i(795),r=i(417)},179:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.chatEnabledModelsList=a.chatModelParams=a.modelToEncodingMap=a.encodingNames=a.o200k_base=a.r50k_base=a.p50k_edit=a.p50k_base=a.cl100k_base=void 0;const n=i(778),r=i(795);a.cl100k_base="cl100k_base",a.p50k_base="p50k_base",a.p50k_edit="p50k_edit",a.r50k_base="r50k_base",a.o200k_base="o200k_base",a.encodingNames=[a.p50k_base,a.r50k_base,a.p50k_edit,a.cl100k_base,a.o200k_base];const t=Object.fromEntries(Object.entries(n.chatEnabledModels).map((([e,a])=>[e,a.encoding])));a.modelToEncodingMap=Object.fromEntries(Object.entries(n.models).map((([e,a])=>[e,a.encoding])));const o={messageSeparator:"\n",roleSeparator:"\n"},s={messageSeparator:"",roleSeparator:r.ImSep};a.chatModelParams=Object.fromEntries(Object.keys(t).flatMap((e=>e.startsWith("gpt-4")?[[e,s]]:e.startsWith("gpt-3.5-turbo")?[[e,o]]:[]))),a.chatEnabledModelsList=Object.keys(t)},177:(e,a,i)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.getEncodingParams=function(e,a){const i=a(e);switch(e.toLowerCase()){case"r50k_base":return(0,s.R50KBase)(i);case"p50k_base":return(0,t.P50KBase)(i);case"p50k_edit":return(0,o.P50KEdit)(i);case"cl100k_base":return(0,n.Cl100KBase)(i);case"o200k_base":return(0,r.O200KBase)(i);default:throw new Error(`Unknown encoding name: ${e}`)}};const n=i(120),r=i(955),t=i(398),o=i(517),s=i(401)},778:(e,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.models=a.chatEnabledModels=void 0;const i={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}},n={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}},r={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}},t={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}},m={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}},p={...m,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}},k={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}},v=k,f={humanName:"Code Davinci 001",encoding:"p50k_base",description:"Older coding model.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},y={humanName:"Code Cushman 001",encoding:"p50k_base",description:"Older model for coding tasks.",shutdownDate:"2023-03-23",recommendedReplacement:"gpt-4o"},w={...b,humanName:"GPT-4 32k 0314"};a.chatEnabledModels={o1:r,"o1-2024-12-17":r,"o1-preview":t,"o1-preview-2024-09-12":t,"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":i,"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":i,"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":n,"gpt-4o-mini-2024-07-18":n,"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":m,"gpt-4-0125-preview":m,"gpt-4-1106-preview":p,"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":k,"gpt-4-1106-vision-preview":v,"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":w,"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}}},a.models={...a.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":f,"davinci-codex":f,"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":y,"cushman-codex":y,"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,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.EndOfPrompt=a.ImSep=a.ImEnd=a.ImStart=a.FimSuffix=a.FimMiddle=a.FimPrefix=a.EndOfText=void 0,a.EndOfText="<|endoftext|>",a.FimPrefix="<|fim_prefix|>",a.FimMiddle="<|fim_middle|>",a.FimSuffix="<|fim_suffix|>",a.ImStart="<|im_start|>",a.ImEnd="<|im_end|>",a.ImSep="<|im_sep|>",a.EndOfPrompt="<|endofprompt|>"},995:(e,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.isAscii=void 0,a.endsWithIncompleteUtfPairSurrogate=function(e){if(0===e.length)return!1;const a=e.charCodeAt(e.length-1);return a>=i&&a<=n},a.tryConvertToString=function(e){if(function(e){let a=0;for(;a<e.length;){const i=e[a];let n=0,r=0;if(i<=127)n=1,r=i;else if(192==(224&i)){if(n=2,r=31&i,i<=193)return!1}else if(224==(240&i))n=3,r=15&i;else{if(240!=(248&i))return!1;if(n=4,r=7&i,i>244)return!1}if(a+n>e.length)return!1;for(let i=1;i<n;i++){const n=e[a+i];if(void 0===n||128!=(192&n))return!1;r=r<<6|63&n}if(2===n&&r<128)return!1;if(3===n&&r<2048)return!1;if(4===n&&r<65536)return!1;if(r>=55296&&r<=57343)return!1;if(r>1114111)return!1;a+=n}return!0}(e))return r.decode(e)},a.compareUint8Arrays=function(e,a){const i=Math.min(e.length,a.length);for(let n=0;n<i;n++)if(e[n]!==a[n])return e[n]-a[n];return e.length-a.length},a.isAscii=e=>e<=127;const i=55296,n=56319,r=new TextDecoder("utf8",{fatal:!1})},462:(e,a)=>{function i(e){return e.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&")}Object.defineProperty(a,"__esModule",{value:!0}),a.getMaxValueFromMap=function(e){let a=0;return e.forEach((e=>{a=Math.max(a,e)})),a},a.escapeRegExp=i,a.getSpecialTokenRegex=function(e){const a=[...e].map(i).join("|");return new RegExp(`(${a})`)}},797:(e,a,i)=>{i.r(a),i.d(a,{default:()=>o});const n=["!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","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","er"," t"," a","en","on","re"," s","at","or","es"," ","an"," "," d","he"," c"," p","is","ar","it","\n\n","al",[224,164],"le","ou"," m"," f"," w"," b","as","ing"," the","ic","et"," o","ion","ed","el"," n","ro","ent",[32,208],"nd","st",[225,131],"а"," l"," in",";\n","ct"," ","om","il"," h","am"," =","id"," to","о",[226,128]," e","ا","im"," re"," v","ad"," th"," and","е"," of"," g","ur","и","ch",[32,224]," de","\t\t"," S"," u","т","ut","ol","н"," y","ig","se","р","ot","em","ag","iv"," (","qu"," "," T"," {"," A","ay"," I",[224,165],"ac",[224,166],"ul",");\n"," C",".\n\n","os","if",[32,224,164],"od","с","\r\n","tr"," k","un","ل","--","est","é","ab","ate","ir",[224,184]," is","л","ow","us",[224,180],"ation"," }",[32,216],"ort"," M",' "',"//","um"," for","ie",[224,170]," P","ter","ce","our"," on","ap","th"," {\n"," con","av"," ","ers","**","te",",\n"," be","م"," D","()","و"," B","end"," st","ist","ak","ly","pe"," *","ن","and"," r",[224,178],"res","ub","oc","ر"," al",[224,176],"ess","ith","’",[208,190,208]," pro"," j","у","ي","ame","ver",")\n","port"," an","á","ä"," L"," com"," ne"," F","20","ass"," E"," se","lic"," R"," '","к",[32,215]," <","ы","ue","op","out"," en","ht"," wh"," as",[224,174]," qu","ction",[227,128],"age"," N","og"," it"," you","iz"," with"," that",".."," W"," H","ip","д","ex","int","ill","ant","urn"," this"," ا","art"," tr"," G","м"," he",";\n\n"," or","00"," le"," ","ik","ment",[224,167],"ore","rom","ere"," ex","ine",[224,181],"ang","ت","----","ा","в","ind","get",">\n","ain","ok","ib","ud","pl","turn"," ","ó"," O"," -","ect","ia","ity"," un"," if","ه"," at","ی","con","per","я",[225,187],"ata","د"," $"," ch"," pr","orm","ack"," are","ile","pt","í"," la",".\n",[32,226,128],"==","import","able","ial","ost","cl","ies"," cl",'("',"ov","ust",[32,224,166],"ü","ö",[224,171]," i","ult","ave","nt"," z",'="'," we","ld","ight","ublic","ive","all","ა","act"," ال",[239,188]," from","å"," su","ire","****","ell","ard","י","ser","tring"," U"," //","ice","ord",[227,129]," }\n",[32,224,170],"ff","->",";\r\n","ne","ı","de","ra","ь","ans","ide","ase","ա"," new"," do"," return"," The",[228,184]," not","\t\t\t\t","ure","े","ast","ob"," V","र"," pl"," your","з",[32,225,131],"In","pr","com",".s"," sh","ime"," J","are","ont"," ar",[224,175]," п","ype"," el","ite","س","ו","pp",[229,164]," by","ب"," K"," +",[224,177]," que","iew","ail","ч"," can","п","201"," me"," с",[224,179],[225,131,144,225,131],'",'," was","്","ace","ode"," int","ach"," have","ll","ij","्","г","ge","elf"," par"," ad","ი","str","one","rou"," ab","”"," res","St","ens","ف","du"," ","form",[32,213],"10","ich","ç","ong","('","ð","à",[213,161,213],"cc","xt"," :","ة","ра","ع","pon"," get","ber","й","Re",[224,164,190,224,164]," all"," [","х","ath","io","α","ject"," te"," In"," des","і","ign",":\n","alue","ork","ve"," will","}\n","();\n",").","::"," в"," class","{\n","lo","ome"," Th","ст","ize"," public"," م","au","ull",[229,189],"ions","б"," }\n\n"," @",[215,153,215],"der","ook","--------","ш"," us","ance","ould"," н",[227,131]," im","__","put","ient",[228,186],".get","ен"," per"," vo","ext","ated","č","ق","yst","ous","ि","so","',","。","ple",[215,149,215],"ک","erv"," \n","ე",[224,185],"par","া","cr","ress",[32,224,180],"ck","’s",[225,186],[32,236],"ert","ey","ount","</","ma"," go",[224,165,141,224,164],"š"," so","ake","ary"," и","up","vent","ory"," /","彩","ο","pro","τ","ã","ft"," &"," к"," dis","ear"," ma",[224,181,141,224,180],"\t\t\t","ә","unction"," cont","err","_t","ystem","ी","ан"," out","row"," und",[227,130],"ug","ien"," क","ah","ual","this","ock"," has","we","fer",[225,131,148,225,131],[225,128],"19"," et"," no",");\n\n","div"," em","Name"," Y","ER","天","ition"," up","ك"," =>","ri"," man","ι","ery"," pre","##"," es"," б"," sa","ink","eng"," д","ા","'s","ek"," ."," و"," but",[32,224,176],"ε","ng"," est","cre","ound","gr","name"," na","12",[32,224,178]," St","்","app","====","ier","Id"," Re","ree","Con","********",[224,164,191,224,164],"ր"," о","ors","))","String","ে","ose","text"," set","lect"," my","ild","ц","ø","che"," ب",[225,131,152,225,131],"ations","iel"," т"," */","ical","ann","to","),","ew","ов"," am","own","ark","ther","}\n\n","ener"," more"," м","ps",[229,143],"ح","List"," ==","ो","cept","ν",[236,157],"gh","è","Pro","odel"," а","ph","ement","ings","add","IN"," “",[224,166,190,224,166]," ","ар","ike","ool"," var","ade"," ro","ON","The","set","ivate",",","und","ş",[225,158]," "," gr",[230,156],"ão","atch","ung"," str","clud"," op","Ex"," inter","11",[231,165]," col"," part","न","her",".l"," one","vel","ick","ं","ater","rr","ec","...","iss"," void","ج","ո","ton"," sp","ר","क"," ag","ž","ал","æ",".m"," |"," they",[230,151],"ер"," const","ep","inal",")\n\n","ش","ол","les"," da","return","ат"," Ch","tt","enc"," our"," </","ет","ú"," their","ays"," pe",[224,170,190,224,170],"me","ove",[229,189,169,231,165]," comp"," self","ange"," app","anc","15"," def","urr"," time","Com",[32,224,174],"quest"," any","ă","ado","ж","ven"," ob","eth"," #","fo","az"," over"," !","data","ി"," die"," ک"," about","ef","্",".c","ence"," del","led"," stat","ю","ss","alse","']","ি",[32,206],'"\n',"ava","ents","ե","ise","View",");\r\n","RE","“"," work","ry","pos","ank","val",[229,133],"oy","ит","ish","ն"," er",[32,235],"eb"," function","ال","sh","ST"," which","pec","oint"," ent",[224,168],"reat","ble","16","que"," –","ix",[224,167,141,224,166],"30","…","duct","tem","aw"," */\n",".com","line","ે","Th",[228,185],"tion","ز","abel","್","Cont","ор"," add","sp","ო",'",\n',"ely","irst","ió","public"," ت","self","18","א","mer","uk","25"," bl","Type"," van","ied","rit","ale","σ","essage","arg",'");\n',"ê","ific","ield"," _","oll","్","õ","200","erm","['","uch","dd","ρ","cess","Data","ć"," bu"," String","vo","co","ל"," fe","ada","ان",".f","crip","ה"," use","ian",".p"," \n\n"," else","Res","Ch","ty","eg","ны"," para",[32,224,184]," id"," é"," ","',\n"," x","彩票"," also"," who"," System","ese"," à",[32,229],"ervice","\tif"," It","э"," der","AT","ash",".set","ом"," his","ox","()\n"," на"," some","umber"," data","uth","ID","Col",".S",'":',"ի"," ver","ator","ner","pect"," private","ע","igh","any"," pos","lement","aj"," null",[224,175,141,224,174]," Pro"," acc","ел"," when","EN"," स"," je","14"," пр","од"," end","fig","($","ait","ke"," other","ى","қ","yn"," off","_s","Text","old","ger","view"," af"," year","_m","erson","ни","als",'">',"đ","red",".b","read"," br","ಿ"," з","----------------","tern"," like",[224,179,141,224,178],"OR","000","_c","ión","ten",[224,180,191,224,180],"li"," name"," need","ource","13","AR"," kn","def","urrent","roup","ception","ł","date"," di","ص",[32,194],"202"," reg","ار",[225,131,157,225,131]," just"," This","त"," act","ute","но"," org"," ser"," her",".A","_f","wo"," been"," may"," les"," د"," true","quire","π","ə","let","its"," min","uct"," een","ւ","100"," there","param","son","خ"," ل","_p","ict","ai","ax",[224,183],[237,149],"ating"," ,"," Un","،"," rec",".t","ys","ader"," them"," real"," ac",[229,174],"cont"," che","oun",".d","ates"," por"," ind","า","To","ices","itt","Cl","new"," Com"," ph"," hel","\treturn"," comm","、","ి"," ","32","utton","LE","ning",":\n\n"," los","中",'")',"ues"," co","ط"," ह","Tr",[229,136]," what"," bet","\r\n\r\n","ond"," We","arch","ли"," ap","trib"," met","17"," ?"," >","η","////","uf","user","vid","ible","yle"," value","ς","50","น","ength","very"," ف","ponse","of"," fr","iet","ог","class"," lo","ault","ask"," het"," у",'";\n',"Ob"," av",[224,177,141,224,176],"().","ल",[224,182],[224,167,135,224,166]," had"," val"," sc","ages"," du","ames","be","var",[224,166,191,224,166],[228,187],"IT"," ה","ф",[229,144],"clude"," cons",[32,195]," med"," det","ument","_l","на","ana"," would","υ","AL","roll"," false"," Q","天天","پ"," Z"," type","ole","ular","min","24"," how","स","。\n\n"," dr","AN","ful"," dif","til","na"," were","ہ"," ع","'t",".h","####","ople"," into"," sur","ows"," Tr","amp"," De","air"," {\r\n"," cre"," make","rol","ina","от","ta"," א","(f","ու",[235,139],"SE","્","ے"," Con","ु"," result","_b"," rel","_id","ات"," loc",'">\n',"ics","')"," sub","error","ethod"," )","ze"," fl","ી"," Se","========",[224,171,141,224,170],"af","ह","ho",[229,156]," java","ody"," म","ml","ts"," list",[231,154],"ins","_d","ww","ת","En","ా","מ",[229,185]," than","’t","ем","itle","ente"," first","ica"," aw","ę"," bo","By"," प","Se","–","Par","je"," import"," tem","Item","ു","]\n"," س","value","ious","work","ause","print","ка","lick","ule"," back","ense"," start"," ein"," only","(\n"," You","ures"," ke","ower","**\n","****************","arr",[230,150],"的"," its","raw","ร"," fil"," string","ces"," inform","ą"," form","ments","ү","urs","ities","ayer"," look"," let"," static","ember","day"," best","म","Value","ler","大"," under","ు"," trans","ender"," most"," find"," person"," ed","ustom","ла","]."," help","olog","ки","string"," Wh"," ng","ateg","lection","den","oth"," rem",[216,167,216],"κ"," people"," !="," Al","أ"," car","।","const","ி","ọ","ാ","la",[224,178,191,224,178],"ед","ğ"," He"," ass","irect"," want","ari","://","ession"," ","ren","ան"," An","ै","ия","bo","={","ு","gram",".D","br"," "," "," don"," long","он","!\n\n"," gu"," sk","ern","Im","wa","22"," inst","load","rough"," um",[231,189],"?\n\n","ha","щ"," أ","ets","_C"," final","μ","40"," arr"," &&","ב","λ","时"," read","ë","ש","อ","orld","uc","];\n","hed",".F","reak","fr","atus"," ge","ой"," ve","ting","';\n"," test","ção","++",[229,155],"no","bl","Object"," every"," Ar"," spec","és"," should","ponent","ES",".j"," know","ood","ility","Exception"," sm","נ"," mon","[i"," cr"," she"," Ex","wn","\tpublic",[32,234]," well","ush","ż","ux",[32,218]," pres"," sch","ms","да"," si","yp"," den","tra","iver",[224,180,190,224,180],"ager"," ن","ಾ"," il"," exper","ө"," som",[32,230],"col","ative"," г","word","reg"," hand","url","【","try","rap","ons","ream","ily","iness"," mod","】"," dat"," then","Get",":","ym"," through","));\n","use","ccess"," pol","uss"," user"," char"," inv","aut","网","fore","idth"," opt","ન",[224,176,190,224,176],".n","fl","icht","ats"," р","ý"," require","â"," If","User"," sim","using","ends"," ч"," right","serv"," %",[232,167]," pass","ka","amb",[224,174,191,224,174],[163,225,131],"(s"," الم","23","þ"," },\n","ის"," stud","ί","ui","ية","sert"," very","ough","ñ","ife","ais","ref","_S","void"," As","ior"," these"," web","State","ased","):\n",[224,181,129,224,180]," dec","ам"," sol"," product"," 天天"," case","ર",[224,178,190,224,178],"cond","ებ","CT",'")\n',[232,181],"key"," good","ene","ام"," mak","ો","ars",[231,148],"ni"," cor"," ka"," vis","60",[213,165,213]," bel","ು","rray"," prof"," dur"," down"," bus"," where"," two"," see","unc","De","»"," sl"," post"," att","perty","Time"," pour"," aut"," high","ся"," after","rem"," ext","php","for","cent",".g","ouse","ru","ackage"," \n","ак","ature","ister","ür","UL",".add","[]"," even","ational"," now"," Sh","ara","