overtime-live-trading-utils 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -6,6 +6,7 @@ export * from './src/utils/odds';
6
6
  export * from './src/utils/sports';
7
7
  export * from './src/utils/constraints';
8
8
  export * from './src/utils/spread';
9
+ export * from './src/utils/opticOdds';
9
10
 
10
11
  // constants
11
12
  export * from './src/constants/common';
package/main.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.thalesUtils=r():e.thalesUtils=r()}(this,(()=>(()=>{"use strict";var e={d:(r,a)=>{for(var E in a)e.o(a,E)&&!e.o(r,E)&&Object.defineProperty(r,E,{enumerable:!0,get:a[E]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{AMERICAN_LEAGUES:()=>U,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,League:()=>t,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>P,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MONEYLINE_TYPE_ID:()=>Q,MULTIPLIER_100:()=>Z,MatchResolveType:()=>N,MoneylineTypes:()=>S,PeriodType:()=>T,Provider:()=>I,ScoringType:()=>s,Sport:()=>L,SpreadTypes:()=>p,TAG_CHILD_SPREAD:()=>X,TAG_CHILD_TOTALS:()=>z,TotalTypes:()=>l,UFC_LEAGUE_IDS:()=>u,ZERO:()=>k,adjustSpreadOnChildOdds:()=>Le,adjustSpreadOnOdds:()=>x,allowGameSportWithPeriodConstraint:()=>le,allowGameSportWithResultConstraint:()=>Ne,allowSoccerGame:()=>se,calculateImpliedOddsDifference:()=>c,checkGameContraints:()=>pe,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>ie,fetchResultInCurrentSet:()=>Te,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>h,getBookmakersArray:()=>O,getLeagueInfo:()=>V,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>B,getLeaguePeriodType:()=>f,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>w,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>Ee,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupAndFormatTotalOdds:()=>_e,processMarket:()=>Se,teamNamesMatching:()=>H}),"function"!=typeof Object.assign&&(Object.assign=function(e,r){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(e),E=1;E<arguments.length;E++){var i=arguments[E];if(null!=i)for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(a[o]=i[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function E(e,r,a){return void 0===a||0==+a?Math[e](r):(r=+r,a=+a,isNaN(r)||"number"!=typeof a||a%1!=0?NaN:r<0?-E(e,-r,a):(r=r.toString().split("e"),+((r=(r=Math[e](+(r[0]+"e"+(r[1]?+r[1]-a:-a)))).toString().split("e"))[0]+"e"+(r[1]?+r[1]+a:a))))}var i,o,A={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var r=a(100/this.decimalValue);return null!==e.precision&&(r=E("round",r,-e.precision)),r.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(e){var r,a=e.toString().split("/");if(e=parseFloat(a[0]),2===a.length)r=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");r=1}if(0===e||0===r||e/r<=0)throw new Error("Outside valid range");return 1+e/r},to:function(e){return function(e,r){for(var a,E=[0,1],i=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var E=null,i=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==i?E=r:0===i?E=r.substring(1,r.length):i<r.length&&(E=r.substring(0,i)+r.substring(i+1,r.length));var o=E,A=o.toString().length,_=e,L=_.toString().length;0===_&&(L=0);var t,S=A-L;for(t=S;t>0&&o%2==0;t--)o/=2;for(t=S;t>0&&o%5==0;t--)o/=5;return o}(e),A=e,_=Math.pow(10,-r)/2,L=2;L<1e3;L++){var t=Math.floor(A);if(E[L]=t*E[L-1]+E[L-2],Math.abs(E[L])>o)return;if(i[L]=t*i[L-1]+i[L-2],a=E[L]/i[L],Math.abs(a-e)<_||NaN==a)return E[L].toString()+"/"+i[L].toString();A=1/(A-t)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},_=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(i=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,i.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},i);_.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=E("round",a,-r.precision)),a};var L,t,S,p,l,s,N,T,I,n,d=_.from,O=function(e,r,a){var E=e.find((function(e){return Number(e.sportId)===Number(r)}));if(E){if(""==E.primaryBookmaker)return a;var i=[];return E.primaryBookmaker&&i.push(E.primaryBookmaker),E.secondaryBookmaker&&i.push(E.secondaryBookmaker),E.tertiaryBookmaker&&i.push(E.tertiaryBookmaker),i}return a},R=function(e,r,a,E,i){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,_=o.awayOdds,L=a?0:o.drawOdds;if(r.some((function(r){var E=e.get(r);return!!E&&(0===E.homeOdds||0===E.awayOdds||!a&&0===E.drawOdds||1===E.homeOdds||1===E.awayOdds||!a&&1===E.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:_,drawOdds:a?0:L};if(r.slice(1).some((function(r){var o=e[r];if(o){var t=o.homeOdds,S=o.awayOdds,p=o.drawOdds,l=d("decimal",A).to("impliedProbability"),s=d("decimal",_).to("impliedProbability"),N=a?0:d("decimal",L).to("impliedProbability"),T=d("decimal",t).to("impliedProbability"),I=d("decimal",S).to("impliedProbability"),n=a?0:d("decimal",p).to("impliedProbability"),O=c(l,T),R=c(s,I),P=a?0:c(N,n);if(O>E&&l>i&&T>i||R>E&&s>i&&I>i||!a&&P>E&&N>i&&n>i)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var t=[];return r.forEach((function(r){return t.push(e.get(r))})),{homeOdds:A,awayOdds:_,drawOdds:a?0:L}},c=function(e,r){var a=Math.abs(e-r)/e*100;return console.log("% diff: "+a),a};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.EMPTY=""}(L||(L={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.EUROCUP=20200]="EUROCUP",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(t||(t={})),function(e){e.MONEYLINE="Moneyline"}(S||(S={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.GOAL_SPREAD="Goal Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(p||(p={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(l||(l={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(s||(s={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(N||(N={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(T||(T={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(I||(I={}));var P=((n={})[t.NCAAF]={sport:L.FOOTBALL,id:t.NCAAF,label:"NCAA Football",opticOddsName:"NCAAF",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NFL]={sport:L.FOOTBALL,id:t.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.MLB]={sport:L.BASEBALL,id:t.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.INNING,isDrawAvailable:!1},n[t.NBA]={sport:L.BASKETBALL,id:t.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NCAAB]={sport:L.BASKETBALL,id:t.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NHL]={sport:L.HOCKEY,id:t.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.OVERTIME,periodType:T.PERIOD,isDrawAvailable:!1},n[t.UFC]={sport:L.FIGHTING,id:t.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.WNBA]={sport:L.BASKETBALL,id:t.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.MLS]={sport:L.SOCCER,id:t.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EPL]={sport:L.SOCCER,id:t.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGUE_ONE]={sport:L.SOCCER,id:t.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA]={sport:L.SOCCER,id:t.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LA_LIGA]={sport:L.SOCCER,id:t.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERIE_A]={sport:L.SOCCER,id:t.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CL]={sport:L.SOCCER,id:t.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EL]={sport:L.SOCCER,id:t.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WC]={sport:L.SOCCER,id:t.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:I.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.J1_LEAGUE]={sport:L.SOCCER,id:t.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.IPL]={sport:L.CRICKET,id:t.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.INNING,isDrawAvailable:!1},n[t.T20_BLAST]={sport:L.CRICKET,id:t.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.INNING,isDrawAvailable:!1},n[t.IIHF_WORLD_CHAMPIONSHIP]={sport:L.HOCKEY,id:t.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.COPA_AMERICA]={sport:L.SOCCER,id:t.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.COPA_LIBERTADORES]={sport:L.SOCCER,id:t.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EURO]={sport:L.SOCCER,id:t.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EREDIVISIE]={sport:L.SOCCER,id:t.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.PRIMEIRA_LIGA]={sport:L.SOCCER,id:t.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WC_WOMEN]={sport:L.SOCCER,id:t.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_CUP]={sport:L.SOCCER,id:t.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FRANCE_CUP]={sport:L.SOCCER,id:t.FRANCE_CUP,label:"Coupe de France",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SPAIN_CUP]={sport:L.SOCCER,id:t.SPAIN_CUP,label:"Copa del Rey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ITALY_CUP]={sport:L.SOCCER,id:t.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.TENNIS_WTA]={sport:L.TENNIS,id:t.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.TENNIS_GS]={sport:L.TENNIS,id:t.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.TENNIS_MASTERS]={sport:L.TENNIS,id:t.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TENNIS]={sport:L.TENNIS,id:t.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.GERMANY_CUP]={sport:L.SOCCER,id:t.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGA_MX]={sport:L.SOCCER,id:t.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BRAZIL_1]={sport:L.SOCCER,id:t.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EURO_U21]={sport:L.SOCCER,id:t.UEFA_EURO_U21,label:"UEFA EURO U21",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WORLD_CUP_U20]={sport:L.SOCCER,id:t.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROLEAGUE]={sport:L.BASKETBALL,id:t.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.FIBA_WORLD_CUP]={sport:L.BASKETBALL,id:t.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.FORMULA1]={sport:L.MOTOSPORT,id:t.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:L.TABLE_TENNIS,id:t.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.MOTOGP]={sport:L.MOTOSPORT,id:t.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.SAUDI_PROFESSIONAL_LEAGUE]={sport:L.SOCCER,id:t.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_WATERPOLO]={sport:L.WATERPOLO,id:t.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.QUARTER,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.BOXING]={sport:L.FIGHTING,id:t.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_RUGBY]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.UEFA_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:I.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CONCACAF_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CSGO]={sport:L.ESPORTS,id:t.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.DOTA2]={sport:L.ESPORTS,id:t.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_QUALIFICATION]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.LOL]={sport:L.ESPORTS,id:t.LOL,label:"LOL",opticOddsName:"League of Legends",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.CONMEBOL_WC_QUALIFICATIONS]={sport:L.SOCCER,id:t.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.NON_TITLE_BOXING]={sport:L.FIGHTING,id:t.NON_TITLE_BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.US_ELECTION]={sport:L.POLITICS,id:t.US_ELECTION,label:"US Election 2024",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.UEFA_SUPER_CUP]={sport:L.SOCCER,id:t.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BRAZIL_CUP]={sport:L.SOCCER,id:t.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_CHAMPIONSHIP]={sport:L.SOCCER,id:t.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SCOTLAND_PREMIERSHIP]={sport:L.SOCCER,id:t.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BELGIUM_LEAGUE]={sport:L.SOCCER,id:t.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CZECH_LEAGUE]={sport:L.SOCCER,id:t.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CHILE_PRIMERA]={sport:L.SOCCER,id:t.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FINLAND_LEAGUE]={sport:L.SOCCER,id:t.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ARGENTINA_PRIMERA]={sport:L.SOCCER,id:t.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.RUSSIA_PREMIER]={sport:L.SOCCER,id:t.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.TURKEY_SUPER_LEAGUE]={sport:L.SOCCER,id:t.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERBIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.GREECE_SUPER_LEAGUE]={sport:L.SOCCER,id:t.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.INDIA_PREMIER]={sport:L.SOCCER,id:t.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CHINA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.AUSTRALIA_A_LEAGUE]={sport:L.SOCCER,id:t.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SWITZERLAND_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA_2]={sport:L.SOCCER,id:t.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LA_LIGA_2]={sport:L.SOCCER,id:t.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERIE_B]={sport:L.SOCCER,id:t.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.INDIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGUE_2]={sport:L.SOCCER,id:t.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.AUSTRIA_BUNDESLIGA]={sport:L.SOCCER,id:t.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.DENMARK_SUPER_LEAGUE]={sport:L.SOCCER,id:t.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.POLAND_LEAGUE]={sport:L.SOCCER,id:t.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SWEDEN_LEAGUE]={sport:L.SOCCER,id:t.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.COLOMBIA_PRIMERA_A]={sport:L.SOCCER,id:t.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_EFL_CUP]={sport:L.SOCCER,id:t.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_LEGAUE_1]={sport:L.SOCCER,id:t.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.URUGUAY_PRIMERA_DIVISION]={sport:L.SOCCER,id:t.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROCUP]={sport:L.BASKETBALL,id:t.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.GOLF_H2H]={sport:L.GOLF,id:t.GOLF_H2H,label:"Golf head-to-head",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.GOLF_WINNER]={sport:L.GOLF,id:t.GOLF_WINNER,label:"Golf Tournament Winner",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n),M=[t.CSGO,t.DOTA2,t.LOL,t.TENNIS_GS,t.TENNIS_MASTERS,t.SUMMER_OLYMPICS_TENNIS,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_1,t.TENNIS_MASTERS_LIVE_MAPPING_V2_2,t.TENNIS_MASTERS_LIVE_MAPPING_V2_3,t.TENNIS_MASTERS_LIVE_MAPPING_V2_4,t.TENNIS_MASTERS_LIVE_MAPPING_V2_5,t.TENNIS_MASTERS_LIVE_MAPPING_V2_6,t.TENNIS_MASTERS_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_8,t.TENNIS_MASTERS_LIVE_MAPPING_V2_9,t.TENNIS_MASTERS_LIVE_MAPPING_V2_10,t.TENNIS_MASTERS_LIVE_MAPPING_V2_11,t.TENNIS_MASTERS_LIVE_MAPPING_V2_12,t.TENNIS_MASTERS_LIVE_MAPPING_V2_13,t.TENNIS_MASTERS_LIVE_MAPPING_V2_14,t.TENNIS_MASTERS_LIVE_MAPPING_V2_15,t.TENNIS_MASTERS_LIVE_MAPPING_V2_16,t.TENNIS_MASTERS_LIVE_MAPPING_V2_17,t.TENNIS_MASTERS_LIVE_MAPPING_V2_18,t.TENNIS_MASTERS_LIVE_MAPPING_V2_19,t.TENNIS_MASTERS_LIVE_MAPPING_V2_20,t.TENNIS_MASTERS_LIVE_MAPPING_V2_21,t.TENNIS_MASTERS_LIVE_MAPPING_V2_22,t.TENNIS_WTA_LIVE_MAPPING_V2_1,t.TENNIS_WTA_LIVE_MAPPING_V2_2,t.TENNIS_WTA_LIVE_MAPPING_V2_3,t.TENNIS_WTA_LIVE_MAPPING_V2_4,t.TENNIS_WTA_LIVE_MAPPING_V2_5,t.TENNIS_WTA_LIVE_MAPPING_V2_6,t.TENNIS_WTA_LIVE_MAPPING_V2_7],C=[t.SUMMER_OLYMPICS_RUGBY,t.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[t.NCAAF,t.NFL,t.MLB,t.NBA,t.NCAAB,t.NHL,t.WNBA,t.MLS,t.IPL,t.T20_BLAST],u=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},G={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},y={1:"NCAAF",2:"NFL",3:"MLB",4:"NBA",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=P[e];return r?r.sport:L.EMPTY},D=function(e){var r=P[e];return r?r.label:""},g=function(e){var r=P[e];return r?r.provider:""},b=function(e){var r=P[e];return!!r&&r.isDrawAvailable},F=function(e){return e.filter((function(e){return"true"===e.enabled})).map((function(e){return Number(e.sportId)}))},h=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"true"===r.enabled})).map((function(e){return e.marketName}))},V=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},B=function(e){var r=P[e];return r?r.opticOddsName:void 0},f=function(e){var r=P[e];return r?r.periodType:""},w=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},Y=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,E,i,o){var A,_;if(M.includes(e)?(A=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase(),_=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase()):(A=E.toLowerCase()==r.toLowerCase(),_=i.toLowerCase()==a.toLowerCase()),!0!==A){var L=o.get(E.toLowerCase()),t=o.get(r.toLowerCase()),S=o.get(a.toLowerCase());if([L,t].some((function(e){return null==e})))return!1;A=M.includes(e)?L==t||L==S:L==t}if(!0!==_){var p=o.get(i.toLowerCase());if(t=o.get(r.toLowerCase()),[p,S=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;_=M.includes(e)&&p==t||p==S}return A&&_},W=function(e,r,a,E){var i;if(v(a)==L.TENNIS){var o=r.getTime(),A=e.getTime();i=Math.abs(A-o)<=Number(60*E*1e3)}else i=r.toUTCString()==e.toUTCString();return i},k=0,K="Draw",Q=0,j=.2,X=10001,z=10002,Z=100,x=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var E=e.reduce((function(e,r){return e+r}),0);if(E<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(E-1)))return e;a=r}var i=1+a/100,o=i/E,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var _=A.reduce((function(e,r){return e+r}),0);if(_<1)return Array(e.length).fill(0);var L=i/_;return A.map((function(e){return e*L}))},J=function(e,r,a,E){var i=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return i?{minSpread:i.minSpread?Number(i.minSpread):E,targetSpread:i.targetSpread?Number(i.targetSpread):0}:{minSpread:E,targetSpread:0}},q=function(){return q=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},q.apply(this,arguments)},$=function(e,r,a){if(a||2===arguments.length)for(var E,i=0,o=r.length;i<o;i++)!E&&i in r||(E||(E=Array.prototype.slice.call(r,0,i)),E[i]=r[i]);return e.concat(E||Array.prototype.slice.call(r))},ee=function(e){return e===k?0:re("decimal","impliedProbability",e)},re=function(e,r,a){try{return d(e,a).to(r)}catch(e){return 0}},ae=function(e,r,a,E,i){var o=new Map;return a.forEach((function(a){var A=0,_=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.homeTeam.toLowerCase()}));0!==_.length&&(A=_[0].price);var L=0,t=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.awayTeam.toLowerCase()}));0!==t.length&&(L=t[0].price);var S=0;if(!i){var p=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===K.toLowerCase()}));0!==p.length&&(S=p[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:L,drawOdds:S})})),o},Ee=function(e,r,a,E,i,o,A){var _={homeTeam:E.home_team,awayTeam:E.away_team},L=ae(E.odds,S.MONEYLINE,a,_,e),t=R(L,a,e,A,j);if(t.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:t.errorMessage};var p=(e?[t.homeOdds,t.awayOdds]:[t.homeOdds,t.awayOdds,t.drawOdds]).map((function(e){return ee(e)})),l=J(r,i,Q,o);return{odds:p=null!==l?x(p,l.minSpread,l.targetSpread):x(p,o,0)}},ie=function(e,r,a,E,i,o){var A=[[],[],[]],_=A[0],L=A[1],t=A[2],S=V(a,o),p={homeTeam:e.home_team,awayTeam:e.away_team};if(S.length>0){oe(e.odds,S,E[0]).filter((function(e){return e&&.5===Math.abs(e.selection_points%1)})).forEach((function(e){"Total"===e.type?L.push(e):"Spread"===e.type&&_.push(e)}));var l=$($([],Ae(_,p),!0),_e(L,p),!0);Le(l,r,i).forEach((function(e){var r={leagueId:Number(e.sportId),typeId:Number(e.typeId),type:e.type.toLowerCase(),line:Number(e.line),odds:e.odds},a=S.find((function(r){return Number(r.typeId)===Number(e.typeId)})),E=null==a?void 0:a.minOdds,i=null==a?void 0:a.maxOdds;E&&i&&(e.odds[0]>=E||e.odds[0]<=i||e.odds[1]>=E||e.odds[1]<=i)||t.push(r)}))}else console.warn("No child markets for leagueID: ".concat(Number(a)));return t},oe=function(e,r,a){var E=r.filter((function(e){return e.marketName.toLowerCase()!==S.MONEYLINE.toLowerCase()})).map((function(e){return e.marketName.toLowerCase()}));return e.filter((function(e){return E.includes(e.market_name.toLowerCase())&&e.sports_book_name.toLowerCase()==a.toLowerCase()})).map((function(e){return q(q({},e),r.find((function(r){return r.marketName===e.market_name})))}))},Ae=function(e,r){var a=e.reduce((function(e,a){var E=a.selection_points,i=a.price,o=a.selection,A=a.typeId,_=a.sportId,L=a.type,t=o===r.homeTeam,S=t?E:-E;return e[S]||(e[S]={home:null,away:null,typeId:null,sportId:null}),t?e[S].home=i:e[S].away=i,e[S].typeId=A,e[S].type=L,e[S].sportId=_,e}),{}),E=Object.entries(a).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.home&&null!==E.away&&e.push({line:i,odds:[E.home,E.away],typeId:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return E},_e=function(e,r){var a=e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.selection_points);e[a]||(e[a]={over:null,under:null}),"over"===r.selection_line?e[a].over=r.price:"under"===r.selection_line&&(e[a].under=r.price),e[a].typeId=r.typeId,e[a].type=r.type,e[a].sportId=r.sportId}return e}),{}),E=Object.entries(a).reduce((function(e,a){var E=a[0],i=a[1],o=E.split("_"),A=o[0],_=o[1],L=parseFloat(_),t=A===r.awayTeam;return null!==i.over&&null!==i.under&&e.push({line:L,odds:[i.over,i.under],typeId:t?Number(i.typeId)+1:i.typeId,sportId:i.sportId,type:i.type}),e}),[]);return E},Le=function(e,r,a){var E=[];return e.forEach((function(e){var i=ee(e.odds[0])||k,o=ee(e.odds[1])||k;if(i!==k&&o!==k){var A,_=J(r,e.sportId,e.typeId,a);i=(A=null!==_?x([i,o],_.minSpread,_.targetSpread):x([i,o],a,0))[0],o=A[1],E.push(q(q({},e),{odds:A}))}})),E},te=function(){return te=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},te.apply(this,arguments)},Se=function(e,r,a,E,i,o,A,_){var L=E.filter((function(r){return r.sportId===String(e.leagueId)})),t=Ee(!i,L,a,r,e.leagueId,o,A);t.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=t.errorMessage):e.odds=t.odds.filter((function(e){return 0!=e})).map((function(e){return{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}));var S=ie(r,L,e.leagueId,a,o,_).map((function(r){var a=te(te({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=S,e},pe=function(e,r,a){var E=e.score_home_total,i=e.score_away_total,o=e.clock,A=e.period,_=e.status,t=e.home_team,S=e.away_team,p=parseInt(A),l=v(r);return"completed"==_.toLowerCase()?{allow:!1,message:"Blocking game ".concat(t," - ").concat(S," because it is no longer live.")}:l===L.BASKETBALL?le(t,S,p,a.get(L.BASKETBALL)):l===L.HOCKEY?le(t,S,p,a.get(L.HOCKEY)):l===L.BASEBALL?le(t,S,p,a.get(L.BASEBALL)):l===L.SOCCER?se(t,S,o,A,a.get(L.SOCCER)):l===L.TENNIS?Ne(e,t,S,A,E,i,r,l):l===L.VOLLEYBALL?Ne(e,t,S,p,E,i,r,l):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},le=function(e,r,a,E){return!Number.isNaN(a)&&a>=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},se=function(e,r,a,E,i){var o=Number(a);return!Number.isNaN(o)&&o>=i||Number.isNaN(o)&&"HALF"!=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Ne=function(e,r,a,E,i,o,A,_){var S=Number(E),p=Te(S,e),l="atp"==e.league.toLowerCase(),s={home:i,away:o};return _==L.VOLLEYBALL?Ie(r,a,p,s,ne,5==S?Oe:de):A.toString().startsWith(t.TENNIS_GS)&&l?Ie(r,a,p,s,Re,Pe):A.toString().startsWith(t.TENNIS_GS)&&!l||A.toString().startsWith(t.TENNIS_MASTERS)||A.toString().startsWith(t.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(t.TENNIS_WTA)?Ie(r,a,p,s,ce,Pe):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Te=function(e,r){var a=0,E=0;switch(e){case 1:a=Number(r.score_home_period_1),E=Number(r.score_away_period_1);break;case 2:a=Number(r.score_home_period_2),E=Number(r.score_away_period_2);break;case 3:a=Number(r.score_home_period_3),E=Number(r.score_away_period_3);break;case 4:a=Number(r.score_home_period_4),E=Number(r.score_away_period_4);break;case 5:a=Number(r.score_home_period_5),E=Number(r.score_away_period_5)}return{home:a,away:E}},Ie=function(e,r,a,E,i,o){return Number(E.home)!=i&&Number(E.away)!=i||!(Number(E.home)==i&&a.home>=o||Number(E.away)==i&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(E.home," - ").concat(E.away," (").concat(a.home," - ").concat(a.away,")")}},ne=2,de=20,Oe=10,Re=2,ce=1,Pe=5;return r})()));
1
+ !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.thalesUtils=r():e.thalesUtils=r()}(this,(()=>(()=>{"use strict";var e={d:(r,a)=>{for(var i in a)e.o(a,i)&&!e.o(r,i)&&Object.defineProperty(r,i,{enumerable:!0,get:a[i]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{AMERICAN_LEAGUES:()=>U,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>u,League:()=>L,LeagueIdMapEnetpulse:()=>y,LeagueIdMapOpticOdds:()=>G,LeagueIdMapRundown:()=>m,LeagueMap:()=>P,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MONEYLINE_TYPE_ID:()=>Q,MULTIPLIER_100:()=>z,MatchResolveType:()=>T,MoneylineTypes:()=>p,PeriodType:()=>N,Provider:()=>n,ScoringType:()=>l,Sport:()=>_,SpreadTypes:()=>S,TAG_CHILD_SPREAD:()=>x,TAG_CHILD_TOTALS:()=>X,TotalTypes:()=>s,UFC_LEAGUE_IDS:()=>C,ZERO:()=>k,adjustSpreadOnChildOdds:()=>_e,adjustSpreadOnOdds:()=>Z,allowGameSportWithPeriodConstraint:()=>se,allowGameSportWithResultConstraint:()=>Te,allowSoccerGame:()=>le,calculateImpliedOddsDifference:()=>c,checkGameContraints:()=>Se,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>Ee,fetchResultInCurrentSet:()=>Ne,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>h,getBookmakersArray:()=>O,getLeagueInfo:()=>B,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>w,getLeaguePeriodType:()=>V,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>ie,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupAndFormatTotalOdds:()=>te,mapOpticOddsApiFixtureOdds:()=>Ce,mapOpticOddsApiFixtures:()=>ue,mapOpticOddsApiResults:()=>Ue,processMarket:()=>pe,teamNamesMatching:()=>H}),"function"!=typeof Object.assign&&(Object.assign=function(e,r){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(e),i=1;i<arguments.length;i++){var E=arguments[i];if(null!=E)for(var o in E)Object.prototype.hasOwnProperty.call(E,o)&&(a[o]=E[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function i(e,r,a){return void 0===a||0==+a?Math[e](r):(r=+r,a=+a,isNaN(r)||"number"!=typeof a||a%1!=0?NaN:r<0?-i(e,-r,a):(r=r.toString().split("e"),+((r=(r=Math[e](+(r[0]+"e"+(r[1]?+r[1]-a:-a)))).toString().split("e"))[0]+"e"+(r[1]?+r[1]+a:a))))}var E,o,A={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var r=a(100/this.decimalValue);return null!==e.precision&&(r=i("round",r,-e.precision)),r.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(e){var r,a=e.toString().split("/");if(e=parseFloat(a[0]),2===a.length)r=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");r=1}if(0===e||0===r||e/r<=0)throw new Error("Outside valid range");return 1+e/r},to:function(e){return function(e,r){for(var a,i=[0,1],E=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var i=null,E=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==E?i=r:0===E?i=r.substring(1,r.length):E<r.length&&(i=r.substring(0,E)+r.substring(E+1,r.length));var o=i,A=o.toString().length,t=e,_=t.toString().length;0===t&&(_=0);var L,p=A-_;for(L=p;L>0&&o%2==0;L--)o/=2;for(L=p;L>0&&o%5==0;L--)o/=5;return o}(e),A=e,t=Math.pow(10,-r)/2,_=2;_<1e3;_++){var L=Math.floor(A);if(i[_]=L*i[_-1]+i[_-2],Math.abs(i[_])>o)return;if(E[_]=L*E[_-1]+E[_-2],a=i[_]/E[_],Math.abs(a-e)<t||NaN==a)return i[_].toString()+"/"+E[_].toString();A=1/(A-L)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},t=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(E=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,E.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},E);t.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=i("round",a,-r.precision)),a};var _,L,p,S,s,l,T,N,n,d,I=t.from,O=function(e,r,a){var i=e.find((function(e){return Number(e.sportId)===Number(r)}));if(i){if(""==i.primaryBookmaker)return a;var E=[];return i.primaryBookmaker&&E.push(i.primaryBookmaker),i.secondaryBookmaker&&E.push(i.secondaryBookmaker),i.tertiaryBookmaker&&E.push(i.tertiaryBookmaker),E}return a},R=function(e,r,a,i,E){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,t=o.awayOdds,_=a?0:o.drawOdds;if(r.some((function(r){var i=e.get(r);return!!i&&(0===i.homeOdds||0===i.awayOdds||!a&&0===i.drawOdds||1===i.homeOdds||1===i.awayOdds||!a&&1===i.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:t,drawOdds:a?0:_};if(r.slice(1).some((function(r){var o=e.get(r);if(o){var L=o.homeOdds,p=o.awayOdds,S=o.drawOdds,s=I("decimal",A).to("impliedProbability"),l=I("decimal",t).to("impliedProbability"),T=a?0:I("decimal",_).to("impliedProbability"),N=I("decimal",L).to("impliedProbability"),n=I("decimal",p).to("impliedProbability"),d=a?0:I("decimal",S).to("impliedProbability"),O=c(s,N),R=c(l,n),P=a?0:c(T,d);if(O>i&&s>E&&N>E||R>i&&l>E&&n>E||!a&&P>i&&T>E&&d>E)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var L=[];return r.forEach((function(r){return L.push(e.get(r))})),{homeOdds:A,awayOdds:t,drawOdds:a?0:_}},c=function(e,r){return Math.abs(e-r)/e*100};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.FUTURES="Futures",e.EMPTY=""}(_||(_={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.EUROCUP=20200]="EUROCUP",e[e.NFL_FUTURES=30002]="NFL_FUTURES",e[e.NBA_FUTURES=30004]="NBA_FUTURES",e[e.EPL_FUTURES=30011]="EPL_FUTURES",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(L||(L={})),function(e){e.MONEYLINE="Moneyline"}(p||(p={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.GOAL_SPREAD="Goal Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(S||(S={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(s||(s={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(l||(l={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(T||(T={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(N||(N={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(n||(n={}));var P=((d={})[L.NCAAF]={sport:_.FOOTBALL,id:L.NCAAF,label:"NCAA Football",opticOddsName:"NCAAF",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.NFL]={sport:_.FOOTBALL,id:L.NFL,label:"NFL",opticOddsName:"NFL",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.MLB]={sport:_.BASEBALL,id:L.MLB,label:"MLB",opticOddsName:"MLB",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.INNING,isDrawAvailable:!1},d[L.NBA]={sport:_.BASKETBALL,id:L.NBA,label:"NBA",opticOddsName:"NBA",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.NCAAB]={sport:_.BASKETBALL,id:L.NCAAB,label:"NCAA Basketball",provider:n.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.NHL]={sport:_.HOCKEY,id:L.NHL,label:"NHL",opticOddsName:"NHL",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.OVERTIME,periodType:N.PERIOD,isDrawAvailable:!1},d[L.UFC]={sport:_.FIGHTING,id:L.UFC,label:"UFC",provider:n.OPTICODDS,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.WNBA]={sport:_.BASKETBALL,id:L.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.MLS]={sport:_.SOCCER,id:L.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.EPL]={sport:_.SOCCER,id:L.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.LIGUE_ONE]={sport:_.SOCCER,id:L.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.BUNDESLIGA]={sport:_.SOCCER,id:L.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.LA_LIGA]={sport:_.SOCCER,id:L.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SERIE_A]={sport:_.SOCCER,id:L.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_CL]={sport:_.SOCCER,id:L.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_EL]={sport:_.SOCCER,id:L.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.FIFA_WC]={sport:_.SOCCER,id:L.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:n.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.J1_LEAGUE]={sport:_.SOCCER,id:L.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.IPL]={sport:_.CRICKET,id:L.IPL,label:"Indian Premier League",provider:n.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},d[L.T20_BLAST]={sport:_.CRICKET,id:L.T20_BLAST,label:"T20 Blast",provider:n.RUNDOWN,scoringType:l.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},d[L.IIHF_WORLD_CHAMPIONSHIP]={sport:_.HOCKEY,id:L.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},d[L.COPA_AMERICA]={sport:_.SOCCER,id:L.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.COPA_LIBERTADORES]={sport:_.SOCCER,id:L.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_EURO]={sport:_.SOCCER,id:L.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.EREDIVISIE]={sport:_.SOCCER,id:L.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.PRIMEIRA_LIGA]={sport:_.SOCCER,id:L.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:_.SOCCER,id:L.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_SOCCER]={sport:_.SOCCER,id:L.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.FIFA_WC_WOMEN]={sport:_.SOCCER,id:L.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ENGLAND_CUP]={sport:_.SOCCER,id:L.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.FRANCE_CUP]={sport:_.SOCCER,id:L.FRANCE_CUP,label:"Coupe de France",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SPAIN_CUP]={sport:_.SOCCER,id:L.SPAIN_CUP,label:"Copa del Rey",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ITALY_CUP]={sport:_.SOCCER,id:L.ITALY_CUP,label:"Coppa Italia",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.TENNIS_WTA]={sport:_.TENNIS,id:L.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.TENNIS_GS]={sport:_.TENNIS,id:L.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.TENNIS_MASTERS]={sport:_.TENNIS,id:L.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_TENNIS]={sport:_.TENNIS,id:L.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.GERMANY_CUP]={sport:_.SOCCER,id:L.GERMANY_CUP,label:"DFB Pokal",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.LIGA_MX]={sport:_.SOCCER,id:L.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.BRAZIL_1]={sport:_.SOCCER,id:L.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_EURO_U21]={sport:_.SOCCER,id:L.UEFA_EURO_U21,label:"UEFA EURO U21",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.FIFA_WORLD_CUP_U20]={sport:_.SOCCER,id:L.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:_.HANDBALL,id:L.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_HANDBALL]={sport:_.HANDBALL,id:L.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.EUROLEAGUE]={sport:_.BASKETBALL,id:L.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BASKETBALL]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.FIBA_WORLD_CUP]={sport:_.BASKETBALL,id:L.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.FORMULA1]={sport:_.MOTOSPORT,id:L.FORMULA1,label:"Formula 1",provider:n.ENETPULSE,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:_.TABLE_TENNIS,id:L.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.MOTOGP]={sport:_.MOTOSPORT,id:L.MOTOGP,label:"MotoGP",provider:n.ENETPULSE,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.SAUDI_PROFESSIONAL_LEAGUE]={sport:_.SOCCER,id:L.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_WATERPOLO]={sport:_.WATERPOLO,id:L.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.QUARTER,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_VOLEYBALL]={sport:_.VOLLEYBALL,id:L.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:n.ENETPULSE,scoringType:l.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},d[L.BOXING]={sport:_.FIGHTING,id:L.BOXING,label:"Boxing",provider:n.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_RUGBY]={sport:_.RUGBY,id:L.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:_.RUGBY,id:L.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:_.HOCKEY,id:L.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},d[L.SUMMER_OLYMPICS_HOCKEY]={sport:_.HOCKEY,id:L.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},d[L.UEFA_NATIONS_LEAGUE]={sport:_.SOCCER,id:L.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:n.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.CONCACAF_NATIONS_LEAGUE]={sport:_.SOCCER,id:L.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.CSGO]={sport:_.ESPORTS,id:L.CSGO,label:"CS GO",opticOddsName:"CS2",provider:n.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.DOTA2]={sport:_.ESPORTS,id:L.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:n.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.SUMMER_OLYMPICS_QUALIFICATION]={sport:_.BASKETBALL,id:L.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:n.ENETPULSE,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.LOL]={sport:_.ESPORTS,id:L.LOL,label:"LOL",opticOddsName:"League of Legends",provider:n.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.CONMEBOL_WC_QUALIFICATIONS]={sport:_.SOCCER,id:L.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_CONFERENCE_LEAGUE]={sport:_.SOCCER,id:L.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.NON_TITLE_BOXING]={sport:_.FIGHTING,id:L.NON_TITLE_BOXING,label:"Boxing",provider:n.ENETPULSE,scoringType:l.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},d[L.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:_.SOCCER,id:L.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:n.ENETPULSE,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.US_ELECTION]={sport:_.POLITICS,id:L.US_ELECTION,label:"US Election 2024",provider:n.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.UEFA_SUPER_CUP]={sport:_.SOCCER,id:L.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.BRAZIL_CUP]={sport:_.SOCCER,id:L.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ENGLAND_CHAMPIONSHIP]={sport:_.SOCCER,id:L.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SCOTLAND_PREMIERSHIP]={sport:_.SOCCER,id:L.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.BELGIUM_LEAGUE]={sport:_.SOCCER,id:L.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.CZECH_LEAGUE]={sport:_.SOCCER,id:L.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.CHILE_PRIMERA]={sport:_.SOCCER,id:L.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.FINLAND_LEAGUE]={sport:_.SOCCER,id:L.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ARGENTINA_PRIMERA]={sport:_.SOCCER,id:L.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.RUSSIA_PREMIER]={sport:_.SOCCER,id:L.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.TURKEY_SUPER_LEAGUE]={sport:_.SOCCER,id:L.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SERBIA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.GREECE_SUPER_LEAGUE]={sport:_.SOCCER,id:L.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.INDIA_PREMIER]={sport:_.SOCCER,id:L.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.CHINA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.AUSTRALIA_A_LEAGUE]={sport:_.SOCCER,id:L.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SWITZERLAND_SUPER_LEAGUE]={sport:_.SOCCER,id:L.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.BUNDESLIGA_2]={sport:_.SOCCER,id:L.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.LA_LIGA_2]={sport:_.SOCCER,id:L.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SERIE_B]={sport:_.SOCCER,id:L.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.INDIA_SUPER_LEAGUE]={sport:_.SOCCER,id:L.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.LIGUE_2]={sport:_.SOCCER,id:L.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.AUSTRIA_BUNDESLIGA]={sport:_.SOCCER,id:L.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.DENMARK_SUPER_LEAGUE]={sport:_.SOCCER,id:L.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.POLAND_LEAGUE]={sport:_.SOCCER,id:L.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.SWEDEN_LEAGUE]={sport:_.SOCCER,id:L.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.COLOMBIA_PRIMERA_A]={sport:_.SOCCER,id:L.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ENGLAND_EFL_CUP]={sport:_.SOCCER,id:L.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.ENGLAND_LEGAUE_1]={sport:_.SOCCER,id:L.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.URUGUAY_PRIMERA_DIVISION]={sport:_.SOCCER,id:L.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:n.OPTICODDS,scoringType:l.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},d[L.EUROCUP]={sport:_.BASKETBALL,id:L.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:n.OPTICODDS,scoringType:l.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},d[L.NFL_FUTURES]={sport:_.FUTURES,id:L.NFL_FUTURES,label:"NFL Futures",provider:n.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.NBA_FUTURES]={sport:_.FUTURES,id:L.NBA_FUTURES,label:"NBA Futures",provider:n.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.EPL_FUTURES]={sport:_.FUTURES,id:L.EPL_FUTURES,label:"EPL Futures",provider:n.EMPTY,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.GOLF_H2H]={sport:_.GOLF,id:L.GOLF_H2H,label:"Golf head-to-head",provider:n.JSONODDS,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d[L.GOLF_WINNER]={sport:_.GOLF,id:L.GOLF_WINNER,label:"Golf Tournament Winner",provider:n.JSONODDS,scoringType:l.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},d),M=[L.CSGO,L.DOTA2,L.LOL,L.TENNIS_GS,L.TENNIS_MASTERS,L.SUMMER_OLYMPICS_TENNIS,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,L.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,L.TENNIS_MASTERS_LIVE_MAPPING_V2_1,L.TENNIS_MASTERS_LIVE_MAPPING_V2_2,L.TENNIS_MASTERS_LIVE_MAPPING_V2_3,L.TENNIS_MASTERS_LIVE_MAPPING_V2_4,L.TENNIS_MASTERS_LIVE_MAPPING_V2_5,L.TENNIS_MASTERS_LIVE_MAPPING_V2_6,L.TENNIS_MASTERS_LIVE_MAPPING_V2_7,L.TENNIS_MASTERS_LIVE_MAPPING_V2_8,L.TENNIS_MASTERS_LIVE_MAPPING_V2_9,L.TENNIS_MASTERS_LIVE_MAPPING_V2_10,L.TENNIS_MASTERS_LIVE_MAPPING_V2_11,L.TENNIS_MASTERS_LIVE_MAPPING_V2_12,L.TENNIS_MASTERS_LIVE_MAPPING_V2_13,L.TENNIS_MASTERS_LIVE_MAPPING_V2_14,L.TENNIS_MASTERS_LIVE_MAPPING_V2_15,L.TENNIS_MASTERS_LIVE_MAPPING_V2_16,L.TENNIS_MASTERS_LIVE_MAPPING_V2_17,L.TENNIS_MASTERS_LIVE_MAPPING_V2_18,L.TENNIS_MASTERS_LIVE_MAPPING_V2_19,L.TENNIS_MASTERS_LIVE_MAPPING_V2_20,L.TENNIS_MASTERS_LIVE_MAPPING_V2_21,L.TENNIS_MASTERS_LIVE_MAPPING_V2_22,L.TENNIS_WTA_LIVE_MAPPING_V2_1,L.TENNIS_WTA_LIVE_MAPPING_V2_2,L.TENNIS_WTA_LIVE_MAPPING_V2_3,L.TENNIS_WTA_LIVE_MAPPING_V2_4,L.TENNIS_WTA_LIVE_MAPPING_V2_5,L.TENNIS_WTA_LIVE_MAPPING_V2_6,L.TENNIS_WTA_LIVE_MAPPING_V2_7],u=[L.SUMMER_OLYMPICS_RUGBY,L.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[L.NCAAF,L.NFL,L.MLB,L.NBA,L.NCAAB,L.NHL,L.WNBA,L.MLS,L.IPL,L.T20_BLAST],C=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},y={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},G={1:"NCAAF",2:"NFL",3:"MLB",4:"NBA",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=P[e];return r?r.sport:_.EMPTY},D=function(e){var r=P[e];return r?r.label:""},g=function(e){var r=P[e];return r?r.provider:""},b=function(e){var r=P[e];return!!r&&r.isDrawAvailable},F=function(e){var r=new Set;return e.filter((function(e){return"true"===e.enabled})).map((function(e){return r.add(Number(e.sportId))})),Array.from(r)},h=function(e,r){var a=new Set;return r.filter((function(r){return Number(r.sportId)===Number(e)&&"true"===r.enabled})).map((function(e){return a.add(e.marketName)})),Array.from(a)},B=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},w=function(e){var r=P[e];return r?r.opticOddsName:void 0},V=function(e){var r=P[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},Y=function(e,r){return r.filter((function(r){return Number(r.sportId)===Number(e)&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,i,E,o){var A,t;if(M.includes(e)?(A=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase(),t=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase()):(A=i.toLowerCase()==r.toLowerCase(),t=E.toLowerCase()==a.toLowerCase()),!0!==A){var _=o.get(i.toLowerCase()),L=o.get(r.toLowerCase()),p=o.get(a.toLowerCase());if([_,L].some((function(e){return null==e})))return!1;A=M.includes(e)?_==L||_==p:_==L}if(!0!==t){var S=o.get(E.toLowerCase());if(L=o.get(r.toLowerCase()),[S,p=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;t=M.includes(e)&&S==L||S==p}return A&&t},W=function(e,r,a,i){var E;if(v(a)==_.TENNIS){var o=r.getTime(),A=e.getTime();E=Math.abs(A-o)<=Number(60*i*1e3)}else E=r.toUTCString()==e.toUTCString();return E},k=0,K="Draw",Q=0,j=.2,x=10001,X=10002,z=100,Z=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var i=e.reduce((function(e,r){return e+r}),0);if(i<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(i-1)))return e;a=r}var E=1+a/100,o=E/i,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var t=A.reduce((function(e,r){return e+r}),0);if(t<1)return Array(e.length).fill(0);var _=E/t;return A.map((function(e){return e*_}))},J=function(e,r,a,i){var E=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return E?{minSpread:E.minSpread?Number(E.minSpread):i,targetSpread:E.targetSpread?Number(E.targetSpread):0}:{minSpread:i,targetSpread:0}},q=function(){return q=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},q.apply(this,arguments)},$=function(e,r,a){if(a||2===arguments.length)for(var i,E=0,o=r.length;E<o;E++)!i&&E in r||(i||(i=Array.prototype.slice.call(r,0,E)),i[E]=r[E]);return e.concat(i||Array.prototype.slice.call(r))},ee=function(e){return e===k?0:re("decimal","impliedProbability",e)},re=function(e,r,a){try{return I(e,a).to(r)}catch(e){return 0}},ae=function(e,r,a,i,E){var o=new Map;return a.forEach((function(a){var A=0,t=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===i.homeTeam.toLowerCase()}));0!==t.length&&(A=t[0].price);var _=0,L=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===i.awayTeam.toLowerCase()}));0!==L.length&&(_=L[0].price);var p=0;if(!E){var S=e.filter((function(e){return e&&e.marketName.toLowerCase()===r.toLowerCase()&&e.sportsBookName.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===K.toLowerCase()}));0!==S.length&&(p=S[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:_,drawOdds:p})})),o},ie=function(e,r,a,i,E,o,A){var t={homeTeam:i.homeTeam,awayTeam:i.awayTeam},_=ae(i.odds,p.MONEYLINE,a,t,e),L=R(_,a,e,A,j);if(L.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:L.errorMessage};var S=(e?[L.homeOdds,L.awayOdds]:[L.homeOdds,L.awayOdds,L.drawOdds]).map((function(e){return ee(e)})),s=J(r,E,Q,o);return{odds:S=null!==s?Z(S,s.minSpread,s.targetSpread):Z(S,o,0)}},Ee=function(e,r,a,i,E,o){var A=[[],[],[]],t=A[0],_=A[1],L=A[2],p=B(a,o),S={homeTeam:e.homeTeam,awayTeam:e.awayTeam};if(p.length>0){oe(e.odds,p,i[0]).filter((function(e){return e&&.5===Math.abs(Number(e.points)%1)})).forEach((function(e){"Total"===e.type?_.push(e):"Spread"===e.type&&t.push(e)}));var s=$($([],Ae(t,S),!0),te(_,S),!0);_e(s,r,E).forEach((function(e){var r={leagueId:Number(e.sportId),typeId:Number(e.typeId),type:e.type.toLowerCase(),line:Number(e.line),odds:e.odds},a=p.find((function(r){return Number(r.typeId)===Number(e.typeId)})),i=null==a?void 0:a.minOdds,E=null==a?void 0:a.maxOdds;i&&E&&(e.odds[0]>=i||e.odds[0]<=E||e.odds[1]>=i||e.odds[1]<=E)||L.push(r)}))}else console.warn("No child markets for leagueID: ".concat(Number(a)));return L},oe=function(e,r,a){var i=r.filter((function(e){return e.marketName.toLowerCase()!==p.MONEYLINE.toLowerCase()})).map((function(e){return e.marketName.toLowerCase()}));return e.filter((function(e){return i.includes(e.marketName.toLowerCase())&&e.sportsBookName.toLowerCase()==a.toLowerCase()})).map((function(e){return q(q({},e),r.find((function(r){return r.marketName.toLowerCase()===e.marketName.toLowerCase()})))}))},Ae=function(e,r){var a=e.reduce((function(e,a){var i=a.points,E=a.price,o=a.selection,A=a.typeId,t=a.sportId,_=a.type,L=o===r.homeTeam,p=L?i:-i;return e[p]||(e[p]={home:null,away:null,typeId:null,sportId:null}),L?e[p].home=E:e[p].away=E,e[p].typeId=A,e[p].type=_,e[p].sportId=t,e}),{}),i=Object.entries(a).reduce((function(e,r){var a=r[0],i=r[1],E=parseFloat(a);return null!==i.home&&null!==i.away&&e.push({line:E,odds:[i.home,i.away],typeId:i.typeId,sportId:i.sportId,type:i.type}),e}),[]);return i},te=function(e,r){var a=e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.points);e[a]||(e[a]={over:null,under:null}),"over"===r.selectionLine?e[a].over=r.price:"under"===r.selectionLine&&(e[a].under=r.price),e[a].typeId=r.typeId,e[a].type=r.type,e[a].sportId=r.sportId}return e}),{}),i=Object.entries(a).reduce((function(e,a){var i=a[0],E=a[1],o=i.split("_"),A=o[0],t=o[1],_=parseFloat(t),L=A===r.awayTeam;return null!==E.over&&null!==E.under&&e.push({line:_,odds:[E.over,E.under],typeId:L?Number(E.typeId)+1:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return i},_e=function(e,r,a){var i=[];return e.forEach((function(e){var E=ee(e.odds[0])||k,o=ee(e.odds[1])||k;if(E!==k&&o!==k){var A,t=J(r,e.sportId,e.typeId,a);E=(A=null!==t?Z([E,o],t.minSpread,t.targetSpread):Z([E,o],a,0))[0],o=A[1],i.push(q(q({},e),{odds:A}))}})),i},Le=function(){return Le=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},Le.apply(this,arguments)},pe=function(e,r,a,i,E,o,A,t){var _=i.filter((function(r){return r.sportId===String(e.leagueId)})),L=ie(!E,_,a,r,e.leagueId,o,A);L.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=L.errorMessage):e.odds=L.odds.map((function(r){return 0!=r?{american:I("impliedProbability",r).to("moneyline"),decimal:I("impliedProbability",r).to("decimal"),normalizedImplied:r}:(e.errorMessage="Bad odds after spread adjustment",{american:0,decimal:0,normalizedImplied:0})}));var p=Ee(r,_,e.leagueId,a,o,t).map((function(r){var a=Le(Le({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:I("impliedProbability",e).to("moneyline"),decimal:I("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=p,e},Se=function(e,r,a){var i=v(r),E=e.homeTeam,o=e.homeTotal,A=e.awayTeam,t=e.awayTotal,L=e.clock,p=e.period,S=e.status,s=parseInt(p);return"completed"==S.toLowerCase()?{allow:!1,message:"Blocking game ".concat(E," - ").concat(A," because it is no longer live.")}:i===_.BASKETBALL?se(E,A,s,a.get(_.BASKETBALL)):i===_.HOCKEY?se(E,A,s,a.get(_.HOCKEY)):i===_.BASEBALL?se(E,A,s,a.get(_.BASEBALL)):i===_.SOCCER?le(E,A,L,p,a.get(_.SOCCER)):i===_.TENNIS?Te(e,E,A,p,o,t,r,i):i===_.VOLLEYBALL?Te(e,E,A,s,o,t,r,i):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},se=function(e,r,a,i){return!Number.isNaN(a)&&a>=i?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},le=function(e,r,a,i,E){var o=Number(a);return!Number.isNaN(o)&&o>=E||Number.isNaN(o)&&"HALF"!=i?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Te=function(e,r,a,i,E,o,A,t){var p=Number(i),S=Ne(p,e),s="atp"==e.league.toLowerCase(),l={home:E,away:o};return t==_.VOLLEYBALL?ne(r,a,S,l,de,5==p?Oe:Ie):A.toString().startsWith(L.TENNIS_GS)&&s?ne(r,a,S,l,Re,Pe):A.toString().startsWith(L.TENNIS_GS)&&!s||A.toString().startsWith(L.TENNIS_MASTERS)||A.toString().startsWith(L.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(L.TENNIS_WTA)?ne(r,a,S,l,ce,Pe):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Ne=function(e,r){var a=0,i=0;switch(e){case 1:a=Number(r.homePeriod1),i=Number(r.awayPeriod1);break;case 2:a=Number(r.homePeriod2),i=Number(r.awayPeriod2);break;case 3:a=Number(r.homePeriod3),i=Number(r.awayPeriod3);break;case 4:a=Number(r.homePeriod4),i=Number(r.awayPeriod4);break;case 5:a=Number(r.homePeriod5),i=Number(r.awayPeriod5)}return{home:a,away:i}},ne=function(e,r,a,i,E,o){return Number(i.home)!=E&&Number(i.away)!=E||!(Number(i.home)==E&&a.home>=o||Number(i.away)==E&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(i.home," - ").concat(i.away," (").concat(a.home," - ").concat(a.away,")")}},de=2,Ie=20,Oe=10,Re=2,ce=1,Pe=5,Me=function(){return Me=Object.assign||function(e){for(var r,a=1,i=arguments.length;a<i;a++)for(var E in r=arguments[a])Object.prototype.hasOwnProperty.call(r,E)&&(e[E]=r[E]);return e},Me.apply(this,arguments)},ue=function(e){return e.map((function(e){return{gameId:e.id,startDate:e.start_date,homeTeam:e.home_team_display,awayTeam:e.away_team_display}}))},Ue=function(e){return e.map((function(e){return Me(Me({gameId:e.fixture.id,sport:e.sport.name,league:e.league.name.toLowerCase(),status:e.fixture.status.toLowerCase(),isLive:e.fixture.is_live,clock:e.in_play.clock,period:e.in_play.period?e.in_play.period.toLowerCase():e.in_play.period,homeTeam:e.fixture.home_team_display,awayTeam:e.fixture.away_team_display,homeTotal:e.scores.home.total,awayTotal:e.scores.away.total},me(e.scores.home.periods,"home")),me(e.scores.away.periods,"away"))}))},Ce=function(e){return e.map((function(e){return{gameId:e.id,startDate:e.start_date,homeTeam:e.home_team_display,awayTeam:e.away_team_display,isLive:e.is_live,status:e.status,sport:e.sport.id,league:e.league.name,odds:e.odds.map((function(r){return{id:r.id,sportsBookName:r.sportsbook,name:r.name,price:r.price,timestamp:r.timestamp,points:r.points,isMain:r.is_main,isLive:e.is_live,marketName:r.market.toLowerCase(),playerId:r.player_id,selection:r.selection,selectionLine:r.selection_line}}))}}))},me=function(e,r){return Object.values(e).reduce((function(e,a,i){var E;return Me(Me({},e),((E={})["".concat(r,"Period").concat(i+1)]=a,E))}),{})};return r})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -1163,6 +1163,36 @@ export const LeagueMap = {
1163
1163
  periodType: PeriodType.QUARTER,
1164
1164
  isDrawAvailable: false,
1165
1165
  },
1166
+ [League.NFL_FUTURES]: {
1167
+ sport: Sport.FUTURES,
1168
+ id: League.NFL_FUTURES,
1169
+ label: 'NFL Futures',
1170
+ provider: Provider.EMPTY,
1171
+ scoringType: ScoringType.EMPTY,
1172
+ matchResolveType: MatchResolveType.EMPTY,
1173
+ periodType: PeriodType.EMPTY,
1174
+ isDrawAvailable: false,
1175
+ },
1176
+ [League.NBA_FUTURES]: {
1177
+ sport: Sport.FUTURES,
1178
+ id: League.NBA_FUTURES,
1179
+ label: 'NBA Futures',
1180
+ provider: Provider.EMPTY,
1181
+ scoringType: ScoringType.EMPTY,
1182
+ matchResolveType: MatchResolveType.EMPTY,
1183
+ periodType: PeriodType.EMPTY,
1184
+ isDrawAvailable: false,
1185
+ },
1186
+ [League.EPL_FUTURES]: {
1187
+ sport: Sport.FUTURES,
1188
+ id: League.EPL_FUTURES,
1189
+ label: 'EPL Futures',
1190
+ provider: Provider.EMPTY,
1191
+ scoringType: ScoringType.EMPTY,
1192
+ matchResolveType: MatchResolveType.EMPTY,
1193
+ periodType: PeriodType.EMPTY,
1194
+ isDrawAvailable: false,
1195
+ },
1166
1196
  [League.GOLF_H2H]: {
1167
1197
  sport: Sport.GOLF,
1168
1198
  id: League.GOLF_H2H,
@@ -16,6 +16,7 @@ export enum Sport {
16
16
  GOLF = 'Golf',
17
17
  TABLE_TENNIS = 'TableTennis',
18
18
  POLITICS = 'Politics',
19
+ FUTURES = 'Futures',
19
20
  EMPTY = '',
20
21
  }
21
22
 
@@ -128,6 +129,9 @@ export enum League {
128
129
  ENGLAND_LEGAUE_1 = 20126,
129
130
  URUGUAY_PRIMERA_DIVISION = 20127,
130
131
  EUROCUP = 20200,
132
+ NFL_FUTURES = 30002,
133
+ NBA_FUTURES = 30004,
134
+ EPL_FUTURES = 30011,
131
135
  GOLF_H2H = 100021,
132
136
  GOLF_WINNER = 100121,
133
137
  TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1 = 15312,
@@ -0,0 +1,50 @@
1
+ export type OddsObject = {
2
+ gameId: string;
3
+ startDate: number;
4
+ homeTeam: string;
5
+ awayTeam: string;
6
+ isLive: boolean;
7
+ status: string;
8
+ sport: string;
9
+ league: string;
10
+ odds: [
11
+ {
12
+ id: string;
13
+ sportsBookName: string;
14
+ name: string;
15
+ price: number;
16
+ timestamp: number;
17
+ points: number;
18
+ isMain: boolean;
19
+ isLive: boolean;
20
+ marketName: string;
21
+ playerId: string;
22
+ selection: string;
23
+ selectionLine: string;
24
+ }
25
+ ];
26
+ };
27
+
28
+ export type ScoresObject = {
29
+ gameId: string;
30
+ sport: string;
31
+ league: string;
32
+ status: string;
33
+ isLive: string;
34
+ clock: string;
35
+ period: string;
36
+ homeTeam: string;
37
+ awayTeam: string;
38
+ homeTotal: string;
39
+ awayTotal: string;
40
+ homePeriod1: string;
41
+ awayPeriod1: string;
42
+ homePeriod2: string;
43
+ awayPeriod2: string;
44
+ homePeriod3: string;
45
+ awayPeriod3: string;
46
+ homePeriod4: string;
47
+ awayPeriod4: string;
48
+ homePeriod5: string;
49
+ awayPeriod5: string;
50
+ };
@@ -78,7 +78,7 @@ export const checkOddsFromBookmakers = (
78
78
 
79
79
  // If none of the bookmakers have zero odds, check implied odds percentage difference
80
80
  const hasLargeImpliedPercentageDifference = arrayOfBookmakers.slice(1).some((bookmakerId) => {
81
- const line = oddsMap[bookmakerId];
81
+ const line = oddsMap.get(bookmakerId);
82
82
  if (line) {
83
83
  const otherHomeOdd = line.homeOdds;
84
84
  const otherAwayOdd = line.awayOdds;
@@ -152,6 +152,5 @@ export const checkOddsFromBookmakers = (
152
152
 
153
153
  export const calculateImpliedOddsDifference = (impliedOddsA: number, impliedOddsB: number): number => {
154
154
  const percentageDifference = (Math.abs(impliedOddsA - impliedOddsB) / impliedOddsA) * 100;
155
- console.log('% diff: ' + percentageDifference);
156
155
  return percentageDifference;
157
156
  };
@@ -1,16 +1,18 @@
1
1
  import { League, Sport } from '../enums/sports';
2
+ import { ScoresObject } from '../types/odds';
2
3
  import { getLeagueSport } from './sports';
3
4
 
4
- export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague: League, constraintsMap) => {
5
- const currentScoreHome = opticOddsScoresApiResponse.score_home_total;
6
- const currentScoreAway = opticOddsScoresApiResponse.score_away_total;
5
+ export const checkGameContraints = (opticOddsScoresApiResponse: ScoresObject, marketLeague: League, constraintsMap) => {
6
+ const marketSport = getLeagueSport(marketLeague);
7
+ const homeTeam = opticOddsScoresApiResponse.homeTeam;
8
+ const currentScoreHome = opticOddsScoresApiResponse.homeTotal;
9
+ const awayTeam = opticOddsScoresApiResponse.awayTeam;
10
+ const currentScoreAway = opticOddsScoresApiResponse.awayTotal;
11
+
7
12
  const currentClock = opticOddsScoresApiResponse.clock;
8
13
  const currentPeriod = opticOddsScoresApiResponse.period;
9
14
  const currentGameStatus = opticOddsScoresApiResponse.status;
10
- const homeTeam = opticOddsScoresApiResponse.home_team;
11
- const awayTeam = opticOddsScoresApiResponse.away_team;
12
15
  const currentPeriodNumber = parseInt(currentPeriod);
13
- const marketSport = getLeagueSport(marketLeague);
14
16
 
15
17
  if (currentGameStatus.toLowerCase() == 'completed') {
16
18
  return {
@@ -105,7 +107,7 @@ export const allowSoccerGame = (homeTeam, awayTeam, currentClock, currentPeriod,
105
107
  };
106
108
 
107
109
  export const allowGameSportWithResultConstraint = (
108
- opticOddsScoresApiResponse,
110
+ opticOddsScoresApiResponse: ScoresObject,
109
111
  homeTeam,
110
112
  awayTeam,
111
113
  currentPeriod,
@@ -174,29 +176,29 @@ export const allowGameSportWithResultConstraint = (
174
176
  };
175
177
  };
176
178
 
177
- export const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse) => {
179
+ export const fetchResultInCurrentSet = (currentSet: number, opticOddsScoresApiResponse: ScoresObject) => {
178
180
  let currentHomeGameScore = 0;
179
181
  let currentAwayGameScore = 0;
180
182
  switch (currentSet) {
181
183
  case 1:
182
- currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_1);
183
- currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_1);
184
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod1);
185
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod1);
184
186
  break;
185
187
  case 2:
186
- currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_2);
187
- currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_2);
188
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod2);
189
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod2);
188
190
  break;
189
191
  case 3:
190
- currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_3);
191
- currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_3);
192
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod3);
193
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod3);
192
194
  break;
193
195
  case 4:
194
- currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_4);
195
- currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_4);
196
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod4);
197
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod4);
196
198
  break;
197
199
  case 5:
198
- currentHomeGameScore = Number(opticOddsScoresApiResponse.score_home_period_5);
199
- currentAwayGameScore = Number(opticOddsScoresApiResponse.score_away_period_5);
200
+ currentHomeGameScore = Number(opticOddsScoresApiResponse.homePeriod5);
201
+ currentAwayGameScore = Number(opticOddsScoresApiResponse.awayPeriod5);
200
202
  break;
201
203
  }
202
204
  return { home: currentHomeGameScore, away: currentAwayGameScore };
@@ -1,5 +1,6 @@
1
1
  import * as oddslib from 'oddslib';
2
2
  import { createChildMarkets, getParentOdds } from './odds';
3
+ import { OddsObject } from '../types/odds';
3
4
  /**
4
5
  * Processes a single sports event. This function maps event data to a specific format,
5
6
  * filters invalid events, and optionally fetches player properties if the sport supports it.
@@ -16,14 +17,14 @@ import { createChildMarkets, getParentOdds } from './odds';
16
17
  * @returns {Promise<Object|null>} A promise that resolves to the processed event object or null if the event is invalid or mapping fails.
17
18
  */
18
19
  export const processMarket = (
19
- market,
20
- apiResponseWithOdds,
21
- liveOddsProviders,
22
- spreadData,
23
- isDrawAvailable,
24
- defaultSpreadForLiveMarkets,
25
- maxPercentageDiffBetwenOdds,
26
- leagueMap
20
+ market: any,
21
+ apiResponseWithOdds: OddsObject,
22
+ liveOddsProviders: any,
23
+ spreadData: any,
24
+ isDrawAvailable: any,
25
+ defaultSpreadForLiveMarkets: any,
26
+ maxPercentageDiffBetwenOdds: any,
27
+ leagueMap: any
27
28
  ) => {
28
29
  const sportSpreadData = spreadData.filter((data) => data.sportId === String(market.leagueId));
29
30
 
@@ -49,15 +50,22 @@ export const processMarket = (
49
50
  market.errorMessage = moneylineOdds.errorMessage;
50
51
  } else {
51
52
  // Pack market odds for UI
52
- market.odds = moneylineOdds.odds
53
- .filter((odd) => odd != 0)
54
- .map((_odd) => {
53
+ market.odds = moneylineOdds.odds.map((_odd) => {
54
+ if (_odd != 0) {
55
55
  return {
56
56
  american: oddslib.from('impliedProbability', _odd).to('moneyline'),
57
57
  decimal: oddslib.from('impliedProbability', _odd).to('decimal'),
58
58
  normalizedImplied: _odd,
59
59
  };
60
- });
60
+ } else {
61
+ market.errorMessage = 'Bad odds after spread adjustment';
62
+ return {
63
+ american: 0,
64
+ decimal: 0,
65
+ normalizedImplied: 0,
66
+ };
67
+ }
68
+ });
61
69
  }
62
70
 
63
71
  const childMarkets = createChildMarkets(
package/src/utils/odds.ts CHANGED
@@ -5,6 +5,7 @@ import { adjustSpreadOnOdds, getSpreadData } from './spread';
5
5
  import { MoneylineTypes } from '../enums/sports';
6
6
  import { ChildMarket, LeagueInfo } from '../types/sports';
7
7
  import { getLeagueInfo } from './sports';
8
+ import { OddsObject } from '../types/odds';
8
9
 
9
10
  /**
10
11
  * Converts a given odds value from one format to another.
@@ -55,8 +56,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
55
56
  const homeTeamOddsObject = oddsArray.filter((odd) => {
56
57
  return (
57
58
  odd &&
58
- odd.market_name.toLowerCase() === marketName.toLowerCase() &&
59
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase() &&
59
+ odd.marketName.toLowerCase() === marketName.toLowerCase() &&
60
+ odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
60
61
  odd.selection.toLowerCase() === commonData.homeTeam.toLowerCase()
61
62
  );
62
63
  });
@@ -68,8 +69,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
68
69
  const awayTeamOddsObject = oddsArray.filter(
69
70
  (odd) =>
70
71
  odd &&
71
- odd.market_name.toLowerCase() === marketName.toLowerCase() &&
72
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase() &&
72
+ odd.marketName.toLowerCase() === marketName.toLowerCase() &&
73
+ odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
73
74
  odd.selection.toLowerCase() === commonData.awayTeam.toLowerCase()
74
75
  );
75
76
 
@@ -82,8 +83,8 @@ export const filterOddsByMarketNameTeamNameBookmaker = (
82
83
  const drawOddsObject = oddsArray.filter(
83
84
  (odd) =>
84
85
  odd &&
85
- odd.market_name.toLowerCase() === marketName.toLowerCase() &&
86
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase() &&
86
+ odd.marketName.toLowerCase() === marketName.toLowerCase() &&
87
+ odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase() &&
87
88
  odd.selection.toLowerCase() === DRAW.toLowerCase()
88
89
  );
89
90
 
@@ -122,7 +123,7 @@ export const getParentOdds = (
122
123
  defaultSpreadForLiveMarkets,
123
124
  maxPercentageDiffBetwenOdds
124
125
  ) => {
125
- const commonData = { homeTeam: oddsApiObject.home_team, awayTeam: oddsApiObject.away_team };
126
+ const commonData = { homeTeam: oddsApiObject.homeTeam, awayTeam: oddsApiObject.awayTeam };
126
127
 
127
128
  // EXTRACTING ODDS FROM THE RESPONSE PER MARKET NAME AND BOOKMAKER
128
129
  const moneylineOddsMap = filterOddsByMarketNameTeamNameBookmaker(
@@ -176,7 +177,7 @@ export const getParentOdds = (
176
177
  * @returns {Array} The child markets.
177
178
  */
178
179
  export const createChildMarkets: (
179
- apiResponseWithOdds: any,
180
+ apiResponseWithOdds: OddsObject,
180
181
  spreadDataForSport: any,
181
182
  leagueId: number,
182
183
  liveOddsProviders: any,
@@ -193,8 +194,8 @@ export const createChildMarkets: (
193
194
  const [spreadOdds, totalOdds, childMarkets]: any[] = [[], [], []];
194
195
  const leagueInfo = getLeagueInfo(leagueId, leagueMap);
195
196
  const commonData = {
196
- homeTeam: apiResponseWithOdds.home_team,
197
- awayTeam: apiResponseWithOdds.away_team,
197
+ homeTeam: apiResponseWithOdds.homeTeam,
198
+ awayTeam: apiResponseWithOdds.awayTeam,
198
199
  };
199
200
  if (leagueInfo.length > 0) {
200
201
  // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
@@ -204,7 +205,7 @@ export const createChildMarkets: (
204
205
  liveOddsProviders[0]
205
206
  );
206
207
 
207
- const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5) as any;
208
+ const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(Number(odd.points) % 1) === 0.5) as any;
208
209
 
209
210
  allValidOdds.forEach((odd) => {
210
211
  if (odd.type === 'Total') {
@@ -270,13 +271,15 @@ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueIn
270
271
  return oddsArray
271
272
  .filter(
272
273
  (odd) =>
273
- allChildMarketsTypes.includes(odd.market_name.toLowerCase()) &&
274
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase()
274
+ allChildMarketsTypes.includes(odd.marketName.toLowerCase()) &&
275
+ odd.sportsBookName.toLowerCase() == oddsProvider.toLowerCase()
275
276
  )
276
277
  .map((odd) => {
277
278
  return {
278
279
  ...odd,
279
- ...leagueInfos.find((leagueInfo) => leagueInfo.marketName === odd.market_name), // using .find() for team totals means that we will always assign 10017 as typeID at this point
280
+ ...leagueInfos.find(
281
+ (leagueInfo) => leagueInfo.marketName.toLowerCase() === odd.marketName.toLowerCase()
282
+ ), // using .find() for team totals means that we will always assign 10017 as typeID at this point
280
283
  };
281
284
  });
282
285
  };
@@ -291,10 +294,10 @@ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueIn
291
294
  export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
292
295
  // Group odds by their selection points and selection
293
296
  const groupedOdds = oddsArray.reduce((acc: any, odd: any) => {
294
- const { selection_points, price, selection, typeId, sportId, type } = odd;
297
+ const { points, price, selection, typeId, sportId, type } = odd;
295
298
  const isHomeTeam = selection === commonData.homeTeam;
296
299
 
297
- const key = isHomeTeam ? selection_points : -selection_points;
300
+ const key = isHomeTeam ? points : -points;
298
301
 
299
302
  if (!acc[key]) {
300
303
  acc[key] = { home: null, away: null, typeId: null, sportId: null };
@@ -340,13 +343,13 @@ export const groupAndFormatTotalOdds = (oddsArray, commonData) => {
340
343
  // Group odds by their selection points and selection
341
344
  const groupedOdds = oddsArray.reduce((acc, odd) => {
342
345
  if (odd) {
343
- const key = `${odd.selection}_${odd.selection_points}`;
346
+ const key = `${odd.selection}_${odd.points}`;
344
347
  if (!acc[key]) {
345
348
  acc[key] = { over: null, under: null };
346
349
  }
347
- if (odd.selection_line === 'over') {
350
+ if (odd.selectionLine === 'over') {
348
351
  acc[key].over = odd.price;
349
- } else if (odd.selection_line === 'under') {
352
+ } else if (odd.selectionLine === 'under') {
350
353
  acc[key].under = odd.price;
351
354
  }
352
355
 
@@ -0,0 +1,59 @@
1
+ export const mapOpticOddsApiFixtures = (fixturesData) =>
2
+ fixturesData.map((fixtureData) => ({
3
+ gameId: fixtureData.id, // fixture_id
4
+ startDate: fixtureData.start_date,
5
+ homeTeam: fixtureData.home_team_display,
6
+ awayTeam: fixtureData.away_team_display,
7
+ }));
8
+
9
+ export const mapOpticOddsApiResults = (resultsData) =>
10
+ resultsData.map((resultData: any) => ({
11
+ gameId: resultData.fixture.id, // fixture_id
12
+ sport: resultData.sport.name,
13
+ league: resultData.league.name.toLowerCase(),
14
+ status: resultData.fixture.status.toLowerCase(),
15
+ isLive: resultData.fixture.is_live,
16
+ clock: resultData.in_play.clock,
17
+ period: resultData.in_play.period ? resultData.in_play.period.toLowerCase() : resultData.in_play.period,
18
+ homeTeam: resultData.fixture.home_team_display,
19
+ awayTeam: resultData.fixture.away_team_display,
20
+ homeTotal: resultData.scores.home.total,
21
+ awayTotal: resultData.scores.away.total,
22
+ ...mapScorePeriods(resultData.scores.home.periods, 'home'),
23
+ ...mapScorePeriods(resultData.scores.away.periods, 'away'),
24
+ }));
25
+
26
+ export const mapOpticOddsApiFixtureOdds = (oddsDataArray) =>
27
+ oddsDataArray.map((oddsData) => ({
28
+ gameId: oddsData.id, // fixture_id
29
+ startDate: oddsData.start_date,
30
+ homeTeam: oddsData.home_team_display,
31
+ awayTeam: oddsData.away_team_display,
32
+ isLive: oddsData.is_live,
33
+ status: oddsData.status,
34
+ sport: oddsData.sport.id,
35
+ league: oddsData.league.name,
36
+ odds: oddsData.odds.map((oddsObj) => ({
37
+ id: oddsObj.id, // 39920-20584-2024-35:draftkings:2nd_set_moneyline:francisco_comesana
38
+ sportsBookName: oddsObj.sportsbook,
39
+ name: oddsObj.name,
40
+ price: oddsObj.price,
41
+ timestamp: oddsObj.timestamp,
42
+ points: oddsObj.points,
43
+ isMain: oddsObj.is_main,
44
+ isLive: oddsData.is_live,
45
+ marketName: oddsObj.market.toLowerCase(),
46
+ playerId: oddsObj.player_id,
47
+ selection: oddsObj.selection,
48
+ selectionLine: oddsObj.selection_line,
49
+ })),
50
+ }));
51
+
52
+ const mapScorePeriods = (periods, homeAwayType) =>
53
+ Object.values(periods).reduce(
54
+ (acc: any, periodValue, index) => ({
55
+ ...acc,
56
+ [`${homeAwayType}Period${index + 1}`]: periodValue,
57
+ }),
58
+ {}
59
+ ) as any;
@@ -22,19 +22,24 @@ export const getLeagueIsDrawAvailable = (league: League) => {
22
22
  return leagueInfo ? leagueInfo.isDrawAvailable : false;
23
23
  };
24
24
 
25
- export const getLiveSupportedLeagues = (leagueMap: LeagueInfo[]) => {
26
- return leagueMap.filter((leagueInfo) => leagueInfo.enabled === 'true').map((league) => Number(league.sportId));
25
+ export const getLiveSupportedLeagues = (leagueInfoArray: LeagueInfo[]) => {
26
+ const uniqueId = new Set();
27
+ leagueInfoArray
28
+ .filter((leagueInfo) => leagueInfo.enabled === 'true')
29
+ .map((league) => uniqueId.add(Number(league.sportId)));
30
+ return Array.from(uniqueId);
27
31
  };
28
- export const getBetTypesForLeague = (league: League, leagueMap: LeagueInfo[]) => {
29
- const betTypes = leagueMap
32
+ export const getBetTypesForLeague = (league: League, leagueInfoArray: LeagueInfo[]) => {
33
+ const uniqueMarketNames = new Set();
34
+ leagueInfoArray
30
35
  .filter((leagueInfo) => Number(leagueInfo.sportId) === Number(league) && leagueInfo.enabled === 'true')
31
- .map((leagueInfo) => leagueInfo.marketName);
36
+ .map((leagueInfo) => uniqueMarketNames.add(leagueInfo.marketName));
32
37
 
33
- return betTypes;
38
+ return Array.from(uniqueMarketNames);
34
39
  };
35
40
 
36
- export const getLeagueInfo = (league: League, leagueMap: LeagueInfo[]) => {
37
- const leagueInfos = leagueMap.filter((leagueInfo) => Number(leagueInfo.sportId) === league);
41
+ export const getLeagueInfo = (league: League, leagueInfoArray: LeagueInfo[]) => {
42
+ const leagueInfos = leagueInfoArray.filter((leagueInfo) => Number(leagueInfo.sportId) === league);
38
43
  return leagueInfos;
39
44
  };
40
45
 
@@ -48,8 +53,8 @@ export const getLeaguePeriodType = (league: League) => {
48
53
  return leagueInfo ? leagueInfo.periodType : '';
49
54
  };
50
55
 
51
- export const getLeagueSpreadTypes = (league: League, leagueMap: LeagueInfo[]) => {
52
- const betTypes = leagueMap
56
+ export const getLeagueSpreadTypes = (league: League, leagueInfoArray: LeagueInfo[]) => {
57
+ const betTypes = leagueInfoArray
53
58
  .filter(
54
59
  (leagueInfo) =>
55
60
  Number(leagueInfo.sportId) === Number(league) &&
@@ -61,8 +66,8 @@ export const getLeagueSpreadTypes = (league: League, leagueMap: LeagueInfo[]) =>
61
66
  return betTypes;
62
67
  };
63
68
 
64
- export const getLeagueTotalTypes = (league: League, leagueMap: LeagueInfo[]) => {
65
- const betTypes = leagueMap
69
+ export const getLeagueTotalTypes = (league: League, leagueInfoArray: LeagueInfo[]) => {
70
+ const betTypes = leagueInfoArray
66
71
  .filter(
67
72
  (leagueInfo) =>
68
73
  Number(leagueInfo.sportId) === Number(league) &&