After reverse-engineering the generation of the barcodes, I found that the barcode is generated by the following pattern:
0101{branch-code}{cash-register-code}{date}{bon-id}{price}
key | description |
---|---|
branch-code | the branch code of the cash register (7-digit number) |
cash-register-code | the cash register code (3-digit number) |
date | the date of the bon (DDMMYY) |
bon-id | the bon id (4-digit number) |
price | the price of the bon (9-digit number with 2 decimal places and no comma) |
Apparently the price does not matter when validating a code, therefore the same bon can be used multiple times with different prices. Furthermore the bons do not need to be generated by the checkout but only need to match the given pattern.
Querying the Migros-API at https://web-api.migros.ch/widgets/stores, the following list of branches can be retrieved:
List of branches
branch name | branch-code |
---|---|
Aachtal | 0090320 |
Aadorf | 0093780 |
Aarau | 4797189 |
Aarau - Igelweid | 0034213 |
Aarau Bahnhof | 0033823 |
Aathal Outlet | 0150367 |
Abtwil - Säntispark | 0090491 |
Adligenswil | 0077180 |
Adliswil | 0150062 |
Aesch | 0024600 |
Affoltern a. A. | 0150079 |
Affoltern am Albis | 4797220 |
Agno | 4797187 |
Aigle - Chablais Centre | 0065100 |
Aigle gare | 0063665 |
Allschwil - Binningerstr. | 4797114 |
Allschwil - Paradies | 0024720 |
Allschwil - Stockbrunnenrain | 4797077 |
Allschwil - Ziegelei | 0023220 |
Allschwil-Lindenplatz | 0029530 |
Alnatura Bio Super Markt - Glattzentrum | 0150398 |
Alnatura Bio Super Markt Baden | 0150340 |
Alnatura Bio Super Markt Basel Kirschgarten | 0150375 |
Alnatura Bio Super Markt Bern | 0150397 |
Alnatura Bio Super Markt Bülach | 0150394 |
Alnatura Bio Super Markt Limmatplatz | 0150374 |
Alnatura Bio Super Markt Luzern | 0150341 |
Alnatura Bio Super Markt Metalli Zug | 0150383 |
Alnatura Bio Super Markt Niederdorf | 0150342 |
Alnatura Bio Super Markt Oerlikon | 0150395 |
Alnatura Bio Super Markt Solothurn | 0150376 |
Alnatura Bio Super Markt St. Gallen | 0150392 |
Alnatura Bio Super Markt Uster | 0150396 |
Alnatura Bio Super Markt Winterthur-Grüze | 0150389 |
Alnatura Bio Super Markt Zürich HB - Sihlquai | 0150373 |
Alnatura Bio Super Markt Zürich-City | 0150382 |
Alnatura Bio Super Markt Zürich-Höngg | 0150380 |
Alpnach Outlet | 0076060 |
Altdorf | 0073990 |
Altdorf | 4797125 |
Altstätten SG | 0090415 |
Amriswil | 0090420 |
Amriswil | 4797156 |
Amriswil - Amriville | 0098001 |
Andelfingen | 0093790 |
Appenzell | 0090422 |
Arbedo Castione | 0123780 |
Arbon | 0090421 |
Arlesheim | 0024630 |
Ascona | 0123750 |
Ascona | 4797331 |
Au SG | 0090323 |
Avenches | 0083810 |
Avry Centre | 0084710 |
Baar | 0073850 |
Bad Ragaz | 0090728 |
Bad Zurzach | 0034393 |
Baden | 4797052 |
Baden - Bhf. Take Away | 0035690 |
Baden - City | 0034233 |
Baden-Dättwil | 4797037 |
Baden-Dättwil | 4797360 |
Balerna-Bisio 1 | 4797340 |
Balerna-Bisio 2 | 4797341 |
Balerna-Roncaglia | 4797329 |
Balsthal | 0033723 |
Basel - Allschwiler | 0023170 |
Basel - Bahnhof SBB | 0023900 |
Basel - Birsigstrasse | 0029560 |
Basel - Burgfelder | 0024560 |
Basel - Claramarkt | 0024240 |
Basel - Drachen-Center | 0024280 |
Basel - Dreispitz MParc | 0023200 |
Basel - Efringer | 0023840 |
Basel - Eglisee | 0023880 |
Basel - Flughafenstrasse | 4797216 |
Basel - Gundelitor | 0024520 |
Basel - Hardstrasse | 0023870 |
Basel - Inselstrasse | 0029600 |
Basel - Juniors Market | 0023890 |
Basel - Lachenstrasse | 0029520 |
Basel - Lehenmatt | 0029590 |
Basel - Märtplatz | 0023820 |
Basel - Mülhauser | 0023720 |
Basel - Neuweiler | 0023670 |
Basel - Schützenmatt | 0023160 |
Basel - Stücki | 0023910 |
Basel - Wanderstrasse | 0029510 |
Basel - Wasgenring | 0029610 |
Basel - Zürcherstrasse | 0029500 |
Basel Hochbergerstrasse | 4797312 |
Basel Weil | 4797175 |
Bassersdorf | 0150164 |
Bauma | 0093300 |
Bavois | 0063142 |
Bavois-Alpes | 4797074 |
Bavois-Jura | 4797071 |
Bazenheid | 0090380 |
Belfaux | 0083850 |
Bellinzona | 4797221 |
Bellinzona - Piazza del Sole | 0124210 |
Bellinzona Outlet | 0127220 |
Bellinzona-Nord | 4797333 |
Belp | 0034540 |
Berikon - Mutschellen | 0033893 |
Beringen | 0093700 |
Bern - Bachmätteli | 0034450 |
Bern - Bahnhof | 0034530 |
Bern - Bahnhof Take Away | 0035780 |
Bern - Bethlehem | 0034210 |
Bern - Breitenrain | 0033630 |
Bern - Bubenberg | 0034440 |
Bern - Bümpliz | 4797222 |
Bern - Christoffel | 0033115 |
Bern - Egghölzli | 0033140 |
Bern - Egghölzli | 4797190 |
Bern - Eigerplatz | 0033640 |
Bern - Fellerstrasse | 4797119 |
Bern - Freudenberg | 0034220 |
Bern - Kirchenfeld | 0033220 |
Bern - Lorraine | 0033121 |
Bern - Marktgasse | 0034710 |
Bern - Marktgasse Fachmarkt | 0036400 |
Bern - Murifeld | 0033700 |
Bern - Stöckacker | 0033170 |
Bern - Wankdorf | 4797296 |
Bern - Wankdorf MParc | 0036410 |
Bern - Welle 7 | 0033810 |
Bern - Westside | 0034320 |
Bern - Westside | 4797173 |
Bern - Winkelried | 0034230 |
Bern - Zähringer | 0034360 |
Bern Länggasse | 4797373 |
Bern Westflügel | 0033820 |
Bex | 0063640 |
Biasca | 0123620 |
Biasca | 4797334 |
Biberist | 0033623 |
Biberist | 4797223 |
Biel - Bielerhof | 0034480 |
Biel - Bözingen | 0033290 |
Biel - Madretsch | 0034390 |
Biel - Neumarkt | 0034260 |
Biel Stadion | 0033670 |
Bike World Affoltern a.A | 0150431 |
Bike World Baden | 0036701 |
Bike World Ebikon | 0076930 |
Bike World Gland | 0045260 |
Bike World Hinwil | 0098087 |
Bike World Muri | 0036700 |
Bike World Pratteln | 0026950 |
Bike World Romanel | 0065270 |
Bike World Schlieren | 0150406 |
Bike World Volketswil | 0150427 |
Bike World Winterthur | 0098077 |
Bike World Zuchwil | 0036702 |
Binningen | 4797034 |
Binningen - Gorenmatt | 0023740 |
Binningen - Zentrum | 0024540 |
Bioggio | 4797344 |
Birmensdorf | 0150189 |
Birmensdorf | 4797062 |
Birsfelden | 0024440 |
Birsfelden | 4797113 |
Bischofszell | 0090363 |
Bischofszell | 4797215 |
Bitsch | 0137290 |
Bière | 0063110 |
Blonay | 0063730 |
Bolligen | 4797303 |
Bonstetten | 0150865 |
Boswil | 4797164 |
Boudry | 4797149 |
Breitenbach - Wydehof | 0024500 |
Bremgarten | 4797058 |
Bremgarten | 4797299 |
Bremgarten AG | 0034263 |
Bremgarten Fachmarkt | 0036463 |
Bremgarten Kalchacker | 0033750 |
Brienz | 0033780 |
Brig | 0134540 |
Brissago | 4797336 |
Bronschhofen | 0090392 |
Brugg | 4797290 |
Brugg - Neumarkt | 0034843 |
Brugg AG | 4797172 |
Brugg SportXX | 0036765 |
Brunnen - Bahnhofsmärcht | 0073750 |
Brusino-Arsizio 1 | 4797356 |
Brügg | 4797002 |
Brügg - Centre Brügg | 0034730 |
Bubendorf | 0023790 |
Buchrain - Tschannhof | 0073200 |
Buchs AG - Wynecenter | 0034823 |
Buchs Outlet | 0090649 |
Buchs SG | 0090424 |
Buchs SG - MParc | 0090416 |
Bulle | 4797102 |
Bulle - Gruyère-Centre | 0084270 |
Bulle gare | 0083870 |
Buochs | 0073220 |
Burgdorf | 4797121 |
Burgdorf - Neumarkt | 0034200 |
Burgdorf Fachmarkt | 0036640 |
Bursins | 4797225 |
Bussigny | 0064330 |
Bussigny | 4797371 |
Bülach | 4797165 |
Bülach - Sonnenhof | 0150059 |
Bülach Süd | 0150203 |
Bürglen/Altdorf - Urnertor | 0074310 |
Bütschwil | 0090373 |
Cadenazzo | 4797335 |
Camorino | 4797309 |
Capolago | 4797325 |
Carouge | 0044090 |
Carouge - Acacias | 0044010 |
Carouge - MParc La Praille | 0045140 |
Carouge - Vibert | 0044950 |
Carouge Acacias | 4797413 |
Caslano | 0123880 |
Caslano | 4797379 |
Caslano-Pura | 4797338 |
Centro Agno | 0124300 |
Centro S.Antonino | 0125020 |
Centro S.Antonino OBI | 0126530 |
Cernier | 0083730 |
Cham | 4797040 |
Cham - Neudorf | 0073740 |
Chamoson | 0137235 |
Change Grand-Saconnex | 0046790 |
Change Mont-Blanc | 0046720 |
Change Ouchy | 0046340 |
Change Rive | 0046760 |
Change Thônex | 0046780 |
Chavannes - Renens | 0064320 |
Chavannes les Cèdres | 0063675 |
Chavannes-de-Bogis | 4797423 |
Cheseaux | 4797060 |
Chez-le-Bart - Béroche | 0083760 |
Chiasso - Boffalora | 0123640 |
Chiasso Via Como | 4797339 |
Chiasso-Pedrinate1 | 4797345 |
Chur | 4797184 |
Chur - Calandapark | 0090425 |
Chur - Gäuggeli | 0090427 |
Chur - Ringstrasse | 0090334 |
Chur - West | 4797227 |
Chur Masans | 0090389 |
Chur-Ost | 4797226 |
Churwalden | 0090384 |
Châtel-St-Denis | 0084330 |
Chêne-Bougeries | 4797070 |
Chêne-Bourg | 0044150 |
Clarens - Centre | 0063991 |
Cointrin | 4797106 |
Coldrerio-Paese | 4797328 |
Collombey | 0134520 |
Collombey | 4797108 |
Collonge-Bellerive - Vésenaz | 0044880 |
Colombier | 0083770 |
Conseil à domicile Micasa | 0065291 |
Conthey | 4797174 |
Conthey - Forum des Alpes | 0136411 |
Cortaillod | 0083890 |
Cossonay | 0063680 |
Courtepin | 0083630 |
Crans-Montana | 0133920 |
Crissier | 0065000 |
Crocifisso di Savosa | 0123630 |
Cugy | 0063720 |
D+G Losone | 0126580 |
Daily Zürich-Zollstrasse | 0150362 |
Davos Dorf | 4797380 |
Davos Outlet | 0090660 |
Davos Symondpark | 0090432 |
Davos-Dorf | 0090333 |
Degersheim | 0090314 |
Delémont | 0024320 |
Delémont - MParc | 0026110 |
Derendingen | 0033773 |
Dielsdorf | 0150149 |
Dielsdorf | 4797088 |
Dielsdorf | 4797191 |
Diepoldsau | 0090327 |
Dierikon Outlet | 0076040 |
Diessenhofen | 0093620 |
Dietikon - Bernstrasse | 4797136 |
Dietikon - Limmatfeld | 0150130 |
Dietikon - Löwenzentrum | 0150065 |
Dietlikon | 4797054 |
Dietlikon - Brunnenwiese | 0150169 |
Domat-Ems | 0090381 |
Domdidier | 0083940 |
Dornach | 0023620 |
Däniken | 4797358 |
Dättnau | 0093870 |
Döttingen | 0033743 |
Dübendorf | 0150054 |
Dübendorf | 4797313 |
Dübendorf - Bühlwiesen | 4797229 |
Dübendorf - Hochbord Nord | 0150148 |
Dübendorf - Im Giessen | 4797359 |
Dübendorf - Sonnental | 4797044 |
Dübendorf - Zur Schmiede | 4797230 |
Dübendorf Stettbach | 0150082 |
Düdingen | 0084320 |
Düdingen | 4797400 |
Ebikon - Ladengasse | 0074300 |
Ebikon - Mall of Switzerland | 0074400 |
Ebmatingen | 0150170 |
Ebnat-Kappel | 0090368 |
Echallens | 0063620 |
Ecublens - Croset | 0063690 |
Ecublens - EPFL | 0063910 |
Effretikon | 4797231 |
Effretikon | 4797305 |
Effretikon - Effi-Märt | 0094290 |
Egerkingen - Gäupark | 0034413 |
Egg | 0150074 |
Eglisau | 4797042 |
Eglisau-Nord | 0150078 |
Egnach | 4797179 |
Egolzwil - Schötz | 0073870 |
Einsiedeln | 0150068 |
Einsiedeln | 4797307 |
Elgg | 0093840 |
Embrach | 0094320 |
Emmen - Kapf | 0073680 |
Emmen - Wohncenter | 0074390 |
Emmenbrücke | 4797131 |
Emmenbrücke - Sonnenplatz | 0074350 |
Engelberg | 0073890 |
Epalinges | 0063940 |
Erde | 0137244 |
Erlenbach - Erlibacher Märt | 0150185 |
Erlinsbach | 0033123 |
Erstfeld | 0073180 |
Eschenbach | 0150160 |
Estavayer-le-Lac | 0063630 |
Etoy | 0063900 |
Etoy | 4797182 |
Etoy (marché spécialisé) | 0065290 |
Etrembières (F) | 0049010 |
Ettingen | 0024610 |
Eyholz - Outlet | 0134497 |
FL - Balzers | 0090718 |
FL - Ruggell | 0090724 |
Fahrwangen | 0033903 |
Faido | 0123700 |
Fehraltorf | 0093800 |
Fiesch | 0136465 |
Fislisbach | 0033843 |
Flamatt | 0084350 |
Flamatt - Bernstrasse 50 | 4797169 |
Flawil | 0090431 |
Flawil | 4797006 |
Fleurier | 0083700 |
Forch | 4797041 |
Fornasette | 4797342 |
Frauenfeld - Bahnhofstrasse | 4797014 |
Frauenfeld - Multiplex | 0093600 |
Frauenfeld - Passage | 0094330 |
Frauenfeld - Zeughausstrasse | 0093640 |
Frauenfeld - Zürcherstrasse 276 | 4797101 |
Frauenfeld - Zürcherstrasse 291 | 4797076 |
Freienbach | 4797043 |
Frenkendorf | 4797301 |
Fribourg - Beauregard | 0083670 |
Fribourg - Pérolles | 0084300 |
Fribourg - Schoenberg | 0083640 |
Fribourg - St. Pierre M-Express | 0084240 |
Fribourg AMAG | 4797267 |
Fribourg Gare | 0083980 |
Fribourg Jura | 4797232 |
Fribourg Ste-Thérèse | 0083830 |
Frick | 0033753 |
Frutigen | 0033370 |
Fully | 0133710 |
Fällanden | 0150153 |
Füllinsdorf | 4797111 |
Füllinsdorf | 4797233 |
Füllinsdorf - Schönthal | 0024480 |
Füllinsdorf - Schönthal | 0026470 |
Gandria | 4797337 |
Gd Saconnex - Le Pommier | 0044340 |
Gebenstorf | 0033393 |
Gelterkinden | 0024460 |
Genestrerio | 4797326 |
Genève - Balexert | 0044030 |
Genève - Balexert | 4797130 |
Genève - Champel | 0044110 |
Genève - Charmilles | 0044140 |
Genève - Cointrin | 4797228 |
Genève - Cointrin Aéroport | 0044060 |
Genève - Cornavin Gare | 0044180 |
Genève - Eaux-Vives | 0044250 |
Genève - Fusterie M-Express | 0044290 |
Genève - Jonction | 0044350 |
Genève - Les Cygnes | 0044450 |
Genève - Navigation | 0044430 |
Genève - Plainpalais | 0044230 |
Genève - Rieu | 0044730 |
Genève - Servette | 0044811 |
Genève - Tourelle | 0044840 |
Genève - Vidollet | 0044890 |
Genève - Villereuse | 0044900 |
Genève Montbrillant | 4797207 |
Genève O’Vives | 4797372 |
Gerlafingen | 0033643 |
Giubiasco - Alle Bolle | 0123740 |
Givisiez | 4797138 |
Gland | 0044300 |
Gland | 4797157 |
Glarus | 4797385 |
Glarus - Zentrum Glärnisch | 0150064 |
Glattbrugg | 0150056 |
Glattbrugg | 4797235 |
Glattbrugg | 4797382 |
Glis - Simplon | 0136401 |
Goldach | 0090375 |
Goldach - St.Gallerstr. | 4797099 |
Goldau | 0073790 |
Gossau | 0090433 |
Gossau | 4797314 |
Gossau - Stadtbühlpark | 0090313 |
Gossau - Wilerstrasse | 4797186 |
Gossau Outlet | 0090648 |
Gossau ZH | 0150182 |
Grabs | 0090736 |
Gradelle | 0044360 |
Grancia | 0123790 |
Grancia Do it + Garden | 0126590 |
Grand-Lancy - Palettes | 0044550 |
Granges - Paccot | 0083860 |
Granges-Paccot | 4797061 |
Granges-Paccot - Centre | 0084360 |
Greifensee | 0150156 |
Grenchen | 0034803 |
Grenchen | 4797237 |
Grenchen Nord | 4797032 |
Grenchen Outlet | 0037092 |
Gränichen | 0033953 |
Gstaad | 0034490 |
Gümligen | 0033091 |
Hasle Rüegsau | 0033360 |
Haute-Nendaz | 0134250 |
Hauterive | 4797063 |
Heiden | 0090317 |
Heimberatung Vorhänge | 0150430 |
Heimberg | 0033920 |
Hergiswil NW | 0073130 |
Herisau - Alpsteinstrasse | 0090318 |
Herrlisberg | 4797268 |
Herzogenbuchsee | 0034290 |
Hilterfingen | 0034520 |
Hinterkappelen - Chappelemärit | 0034380 |
Hinwil | 0093650 |
Hinwil | 4797304 |
Hittnau | 0093850 |
Hitzkirch | 0073880 |
Hochdorf - Seetal-Center | 0074340 |
Hombrechtikon | 0150181 |
Horgen - Schinzenhof | 0150055 |
Horw | 0073800 |
Hunzenschwil | 4797047 |
Huttwil | 0034400 |
Hägendorf Outlet | 0037090 |
Hünibach | 0033280 |
Ibach | 4797140 |
Ibach-Schwyz - Mythen-Center | 0074370 |
Ilanz - Center Marcau | 0090467 |
Interlaken | 0034300 |
Interlaken | 4797363 |
Interlaken Lindenalle | 4797311 |
Ipsach | 0033270 |
Ipsach | 4797392 |
Ittigen | 0034510 |
Ittigen - Grauholz | 4797238 |
Jona | 4797239 |
Jona - Stadttor | 0150178 |
Kaltbrunn | 0150893 |
Kerzers | 0083800 |
Kirchberg | 0033770 |
Kirchberg | 4797050 |
Kirchberg-Stelz | 0090378 |
Kloten | 0150067 |
Kollbrunn | 0093860 |
Konolfingen | 0034190 |
Kreuzlingen | 0090349 |
Kreuzlingen | 4797141 |
Kreuzlingen | 4797240 |
Kreuzlingen - Seepark | 0090440 |
Kriens | 4797056 |
Kriens | 4797117 |
Kriens - Hofmatt | 0074360 |
Kriens - Mattenhof | 0073980 |
Kölliken | 4797018 |
Köniz - Bläuacker | 0034240 |
Küsnacht Berg | 4797241 |
Küsnacht ZH | 0150157 |
Küssnacht - Rigimärt | 0073720 |
La Charrière | 0083950 |
La Chaux-de-Fonds - Métropole Centre | 0084230 |
La Chaux-de-Fonds Les Eplatures | 0084310 |
La Neuveville | 0083750 |
La Roche | 0083840 |
La Tour de Trême | 0084340 |
La Tour-de-Peilz | 0063950 |
La Tour-de-Trême | 4797163 |
La Tour-de-Trême Tivoli | 0083970 |
La Vallée | 0063850 |
Lachen | 0150073 |
Lancy-Onex | 0044530 |
Landquart | 0090428 |
Landquart | 4797065 |
Langendorf - Ladedorf | 0034813 |
Langenthal | 0034310 |
Langenthal - MParc | 0036950 |
Langnau a. A. | 0150168 |
Langnau i.E. | 0034460 |
Laufen - Birscenter | 0023230 |
Lausanne | 4797280 |
Lausanne - Bellevaux | 0063880 |
Lausanne - Bergières | 0064570 |
Lausanne - Chailly | 0064520 |
Lausanne - Closelet | 0064580 |
Lausanne - Cour | 0063660 |
Lausanne - Flon Europe | 0063895 |
Lausanne - La Borde | 0063865 |
Lausanne - La Harpe | 0063710 |
Lausanne - La Maladière | 4797213 |
Lausanne - La Sallaz | 0064340 |
Lausanne - Maupas | 0063145 |
Lausanne - Montbenon | 4797064 |
Lausanne - Métropole | 0064970 |
Lausanne - Saint-Paul | 0063970 |
Lausanne - Sévelin | 0063770 |
Le Bouveret | 0133760 |
Le Châble | 0137225 |
Le Landeron | 0083880 |
Le Lignon | 0044370 |
Le Lignon | 4797072 |
Le Locle | 0084280 |
Le Locle | 4797242 |
Lenzburg | 0034243 |
Lenzburg - Bahnhof | 4797362 |
Leuk | 0137220 |
Leukerbad | 0134230 |
Leysin | 0063185 |
Leytron | 0137285 |
Liestal | 0023080 |
Liestal | 4797203 |
Ligornetto | 4797351 |
Littau Outlet | 0076090 |
Locarno | 4797243 |
Locarno - Mercato | 0124240 |
Locarno - Solduno | 0123730 |
Lostorf | 0033233 |
Lugano - Cassarate-Lago | 0124290 |
Lugano - Città | 0125010 |
Lugano - Molino Nuovo | 0123710 |
Lugano - Paradiso | 0123660 |
Lugano - Via Trevano | 4797330 |
Lugano-Viganello | 4797355 |
Lupfig | 0033813 |
Lutry – La Conversion | 0063835 |
Luzern - Allmend | 0073840 |
Luzern - Bahnhof | 0073230 |
Luzern - Bahnhof Daily | 0073150 |
Luzern - Bruchstrasse | 0073770 |
Luzern - Brüelstrasse | 0073670 |
Luzern - Grossmatte | 0073930 |
Luzern - Schlossberg | 0073140 |
Luzern - Schweizerhof | 0074380 |
Luzern - Schönbühl | 0074260 |
Luzern - Waldstätter | 0073690 |
Luzern - Wesemlin | 0077160 |
Luzern - Würzenbachstrasse | 0073270 |
Lyss Lyssbachpark | 0034420 |
M Boudry | 0083820 |
M-Express Pont-Rouge | 0044600 |
MP La Sarraz | 0063122 |
MP Ouchy | 0063132 |
Maggia | 0123820 |
Malters | 0073950 |
Manno | 4797154 |
Marin | 4797185 |
Marin-Centre | 0084721 |
Marly - Centre | 0083650 |
Martigny | 4797171 |
Martigny | 4797294 |
Martigny - Manoir | 0134550 |
Martigny Finettes | 0136460 |
Martigny Quartz Center | 0136450 |
Massagno - Radio | 0123720 |
Matten | 0033790 |
Matzingen | 0093830 |
Meggen | 4797123 |
Meilen | 0150063 |
Meiringen | 0034470 |
Melano | 0123850 |
Melano | 4797324 |
Mellingen | 0033380 |
Mels - Pizolpark | 0090471 |
Mendrisio | 0123760 |
Mendrisio - Via Franscini | 4797323 |
Mendrisio Sud | 0123840 |
Mendrisio-San Martino | 4797403 |
Mendrisio-Via Zorzi | 4797332 |
Menziken | 0033963 |
Meyrin | 0044410 |
Meyrin | 4797068 |
Meyrin | 4797245 |
Meyrin-Parc | 4797370 |
Mies | 4797078 |
Migrol Brig | 4797366 |
Migros Online-Beratung | 0036999 |
Minusio - Centro Borenco | 0123650 |
Montagny | 0064270 |
Montagny | 4797103 |
Monthey - M Central | 0134530 |
Montreux | 0064410 |
Montreux | 4797246 |
Montreux | 4797367 |
Morbio Inferiore - Serfontana | 0124270 |
Morges | 0064290 |
Morges | 4797107 |
Moudon | 0064350 |
Moutier | 0024400 |
Moutier | 4797026 |
Murgenthal | 0033873 |
Muri AG | 0033934 |
Murten/Morat | 0084250 |
Muttenz | 4797248 |
Muttenz | 4797375 |
Muttenz - Lutzert | 0023810 |
Muttenz - Rothausstrasse | 0024380 |
Männedorf | 0150197 |
Mézières | 0063112 |
Möhlin | 0033163 |
Müllheim | 0090351 |
Münchenbuchsee - Tanne | 0033730 |
Münchenstein | 4797247 |
Münchenstein - Gartenstadt | 0024580 |
Münchwilen | 0090376 |
Münsingen | 0034270 |
Naters | 0133770 |
Netstal | 4797249 |
Neuchâtel - Cadolles | 0083930 |
Neuchâtel - Hôpital | 0084210 |
Neuchâtel - Portes-Rouges | 0084220 |
Neuchâtel Quai-Peri | 4797426 |
Neuenhof | 0033663 |
Neuenkirch | 0077210 |
Neuhausen am Rheinfall | 4797204 |
Neunkirch | 0093750 |
Neydens (F) | 0049030 |
Neyruz | 0083960 |
Nidau | 0034330 |
Nidau | 4797250 |
Niederhasli | 0150180 |
Niederurnen | 0150187 |
Noranco | 4797251 |
Novazzano-Brusata1 | 4797347 |
Novazzano-Brusata2 | 4797348 |
Novazzano-Paese | 4797357 |
Noville | 0063645 |
Noville | 4797134 |
Nussbaumen - Markthof | 0033733 |
Nyon | 4797252 |
Nyon - La Combe | 0044470 |
Nyon - Porte de Nyon | 0044320 |
Näfels | 0150330 |
Oberburg | 4797218 |
Oberengstringen | 0150161 |
Oberglatt | 4797005 |
Oberglatt | 4797253 |
Oberkirch | 0073280 |
Obermeilen | 4797244 |
Oberrieden | 4797003 |
Oberriet | 0090331 |
Oberwil | 0023800 |
Oensingen | 0033923 |
Oftringen | 0034253 |
Oftringen | 4797038 |
Oftringen | 4797254 |
Oftringen - MParc | 0036110 |
Olten - Aarburgerstr. | 4797161 |
Olten - Hammer | 0034383 |
Olten - Sälipark | 0034403 |
Olten - Sälipark Fachmärkte | 0036843 |
Olten - Tannwaldstrasse | 4797016 |
Onex | 4797256 |
Opfikon | 4797236 |
Opfikon - Glattpark | 0150154 |
Orbe | 0063930 |
Orbe Gruvatiez | 0063825 |
Oron-la-Ville | 0063810 |
Ostermundigen | 0034430 |
Ostermundigen Poststrasse | 0033720 |
Othmarsingen | 4797297 |
Outlet Dietlikon - Greenhouse | 0150368 |
Outlet Eglisau | 0150370 |
Outlet Romanel | 0065280 |
Outlet Taverne | 0127260 |
Outlet Winterthur | 0096610 |
Payerne | 0064360 |
Payerne | 4797369 |
Peseux | 0084260 |
Pfungen | 0093820 |
Pfungen | 0098021 |
Pfäffikon - Seedammcenter | 0150072 |
Pfäffikon ZH | 0094340 |
Pfäffikon ZH | 4797321 |
Plaffeien | 0083920 |
Plan-les-Ouates | 0044590 |
Plan-les-Ouates | 4797316 |
Pontaise | 0063162 |
Ponte Cremenaga | 4797343 |
Porrentruy | 0024270 |
Porrentruy | 4797067 |
Porte de Versoix | 0044920 |
Pratteln | 0023640 |
Pratteln | 4797219 |
Pratteln-Gehrenacker | 0029540 |
Pregassona | 0123810 |
Prilly | 0063820 |
Prilly | 4797260 |
Prilly - Malley | 0063870 |
Prilly - ch. du Viaduc | 4797059 |
Prilly - rte de Cossonay | 4797098 |
Préverenges | 0063655 |
Puidoux | 0063190 |
Pully | 0064600 |
Rain | 0073920 |
Ramsen | 0097300 |
Rapperswil - Sonnenhof | 0150071 |
Rapperswil - Zentrum | 0150188 |
Rebstein | 0090729 |
Regensdorf | 4797089 |
Regensdorf | 4797261 |
Regensdorf - Zentrum | 0150060 |
Reichenburg | 0150083 |
Reiden | 0073210 |
Reiden Outlet | 0076050 |
Reinach | 4797300 |
Reinach - Mischeli | 0024420 |
Reinach - Zentrum | 0023850 |
Reinach BL | 4797115 |
Reinach Provisorium | 0034464 |
Reinach-Sternenhof | 0026460 |
Relais du St.Bernard | 4797389 |
Renens | 4797128 |
Renens - Florissant | 0064280 |
Renens - Métropole | 0064590 |
Renens Quai Ouest | 0063625 |
Renens Silo | 0064325 |
Rheineck | 0090326 |
Rheinfall | 4797264 |
Rheinfelden | 0034293 |
Riazzino | 0123890 |
Richterswil | 0150158 |
Riehen - Dorf | 0024360 |
Riehen - Grenzacherweg | 0029580 |
Riehen - Niederholz | 0029620 |
Rolle | 0064380 |
Rolle | 4797155 |
Romanel-sur-Lausanne | 0065010 |
Romanshorn | 4797395 |
Romanshorn - Hubzelg | 0090443 |
Romont | 0084292 |
Rorschach - Promenade | 0090324 |
Rorschach - Trischliplatz | 0090445 |
Rothenburg M-Electronics | 0076320 |
Rothrist | 0033383 |
Rothrist | 4797292 |
Rotkreuz | 0073820 |
Rotkreuz | 4797306 |
Ruopigen Zentrum Luzern | 0073710 |
Ruswil | 0073860 |
Réchy | 0137215 |
Rümlang | 4797046 |
Rümlang Hofwisencenter | 0150147 |
Rüschlikon Parkside | 0150075 |
Rüti ZH | 0094230 |
Rüti ZH Fachmarkt | 0096460 |
SOCAR Frauenfeld | 4798325 |
SOCAR Kölliken Nord A1 | 4797402 |
SOCAR Quartino | 4798161 |
Saas Fee | 0133750 |
Saignelégier | 0083790 |
Sainte-Croix | 0063840 |
Samedan | 0090468 |
Samedan | 4797209 |
San Bernardino | 4797262 |
Sant' Antonino | 4797192 |
Sargans | 4797210 |
Sarnen - Sarnen-Center | 0074290 |
Savièse | 0133720 |
Saxon | 0136475 |
Schaan | 0090312 |
Schaffhausen | 4797381 |
Schaffhausen - Breite | 0093670 |
Schaffhausen - Buchthalen | 0093130 |
Schaffhausen - Grubenstrasse | 4797263 |
Schaffhausen - Herblinger Markt | 0094710 |
Schaffhausen - Vorstadt | 0094310 |
Schindellegi | 0150329 |
Schlieren | 4797197 |
Schlieren | 4797265 |
Schlieren - Kesslerplatz | 0150053 |
Schlieren - Rietbach | 0150081 |
Schlieren - Zentrum | 0150198 |
Schmerikon - Bahnhofstrasse | 4797166 |
Schmerikon - St.Gallerstrasse | 4797144 |
Schwarzenburg | 0033260 |
Schwerzenbach | 4797019 |
Schöftland | 0033883 |
Schönbühl - Moosbühl | 0036100 |
Schönbühl - Shoppyland | 0034700 |
Schönenwerd | 0033783 |
Schüpfheim | 0073830 |
Sembrancher | 0136480 |
Sementina | 0123860 |
Sempach Station | 0073910 |
Seon | 0033913 |
Seuzach | 0093720 |
Shell Illnau-Effretikon | 4797398 |
Siebnen | 4797159 |
Sierre | 0134500 |
Sierre Rossfeld | 0134510 |
Sihlbrugg AMAG | 4797295 |
Sins | 4797167 |
Sion | 4797112 |
Sion - Le Ritz | 0133690 |
Sion - Métropole | 0134900 |
Sion - Tourbillon Center | 0133697 |
Sion Outlet | 0134907 |
Sirnach | 0090377 |
Sissach | 0023830 |
Socar Pizzamiglio | 4797259 |
Solothurn | 0034373 |
Solothurn | 4797049 |
Solothurn Baselstrasse | 0033853 |
Solothurn Öufi | 0033833 |
Spiez - Terminus | 0034280 |
Spreitenbach | 0034313 |
Spreitenbach - Tivoli | 0034833 |
Spreitenbach Do It + Garden | 0036813 |
St-Gingolph | 4797419 |
St-Imier | 0083690 |
St-Maurice | 0133730 |
St. Gallen - Bruggen | 0090364 |
St. Gallen - Lachen | 0090321 |
St. Gallen - Langgasse | 0090335 |
St. Gallen - Neudorf | 0090336 |
St. Gallen - Neumarkt | 0090478 |
St. Gallen - Rorschacherstr. | 4797091 |
St. Gallen - Silberturm | 0090447 |
St. Gallen - Spisermarkt | 0090339 |
St. Gallen - St. Fiden | 0090448 |
St. Gallen - Union | 4797310 |
St. Gallen - Zürcherstr. 205 | 4797053 |
St. Gallen - Zürcherstrasse 114 | 4797143 |
St. Gallen Bahnhof | 0090865 |
St. Gallen OBI / Micasa | 0098200 |
St. Katharina Nord | 4797376 |
St. Katharina Süd | 4797377 |
St. Margrethen - Grenzstrasse | 4797142 |
St. Margrethen - Rheinpark | 0090475 |
St. Moritz | 4797387 |
St. Niklaus | 0137265 |
St.Gallen Outdoor | 0098037 |
Staad | 4797404 |
Stabio | 0123680 |
Stabio Gaggiolo | 4797327 |
Stabio-Gaggiolo 1 | 4797349 |
Stabio-Paese | 4797353 |
Stalden | 0137255 |
Stalden | 4797177 |
Stans | 4797168 |
Stans - Länderpark | 0074720 |
Steckborn | 0093740 |
Steffisburg | 0033690 |
Steffisburg | 4797162 |
Steg | 0134260 |
Steg | 4797109 |
Stein | 0033673 |
Stein | 4797212 |
Stein am Rhein | 0094300 |
Steinhausen - Zugerland | 0074710 |
Steinhausen Dorf | 0073970 |
Stäfa | 0150069 |
Stäfa | 4797378 |
Sugiez | 4797320 |
Suhr | 4797206 |
Suhr Outlet | 0037093 |
Suhr Suhrepark | 0033684 |
Sulgen | 4797386 |
Sulgen - Passerelle | 0090383 |
Sursee | 4797118 |
Surseepark | 0074700 |
Surseepark Fachmarkt | 0076710 |
Susten | 0137230 |
Taesch | 0137203 |
Tavannes | 0083740 |
Tavannes | 4797410 |
Taverne | 0123800 |
Taverne | 0126450 |
Tenero | 0123770 |
Tesserete | 0123690 |
Teufen | 0090385 |
Thal | 0090328 |
Thalwil | 0150066 |
Thayngen | 0093710 |
Thayngen | 4797127 |
Therwil | 0029630 |
Therwil | 4797079 |
Thierrens | 0063200 |
Thoiry (F) | 0049000 |
Thun | 4797198 |
Thun - Bälliz | 0034250 |
Thun - Dürrenast | 0033680 |
Thun - Oberland | 0034720 |
Thun - Panorama Center | 0033250 |
Thun - Weststrasse | 4797193 |
Thusis - im Park | 0090466 |
Thônex | 0044830 |
Thônex | 4797080 |
Tramelan | 0083610 |
Triesen | 0090341 |
Trübbach | 4797151 |
Turbenthal | 0093175 |
Tägerwilen | 0090361 |
Uetendorf | 0033330 |
Uitikon-Waldegg | 0150080 |
Unterentfelden | 0033653 |
Unterwetzikon | 0096531 |
Unterägeri | 0073760 |
Urdorf - Spitzacker | 0150151 |
Uster | 4797055 |
Uster - Illuster | 0150251 |
Uster-West | 0150194 |
Utzenstorf - Linde | 0033350 |
Uznach - Frohsinn | 0150179 |
Uzwil - Birkenhof | 0090450 |
VOI Aarburg | 0037338 |
VOI Aarwangen | 0037322 |
VOI Alpnach | 0077357 |
VOI Baden - Mellingerstrasse | 0037335 |
VOI Bern - Fellergut | 0037303 |
VOI Bern - Fischermätteli | 0037306 |
VOI Bern - Kramgasse | 0037343 |
VOI Bern - Schosshalde | 0037311 |
VOI Bern - Spiegel | 0037325 |
VOI Bern - Viktoriastrasse | 0037334 |
VOI Beromünster | 0077350 |
VOI Bettlach | 0037314 |
VOI Biel - Jardin du Paradis | 0037345 |
VOI Biel - Mett | 0037319 |
VOI Boll | 0037339 |
VOI Brügg | 0037307 |
VOI Buchs ZH | 0150802 |
VOI Büron | 0077354 |
VOI Dulliken | 0037321 |
VOI Genève-Cirque | 0049100 |
VOI Geroldswil | 0150806 |
VOI Gland | 0049102 |
VOI Grindelwald | 0037308 |
VOI Horgen | 0150803 |
VOI Ins | 0037324 |
VOI Jegenstorf | 0037323 |
VOI Kappel | 0037344 |
VOI Kilchberg | 0150813 |
VOI Lengnau | 0037328 |
VOI Luzern Wesemlin | 0077355 |
VOI Meyrin - Les Vergers | 0049101 |
VOI Niederbipp | 0037316 |
VOI Niedergösgen | 0037317 |
VOI Niederlenz | 0037336 |
VOI Niederrohrdorf | 0037346 |
VOI Roggwil | 0037329 |
VOI Rombach | 0037309 |
VOI Rümlang | 0150808 |
VOI Safenwil | 0037341 |
VOI Schwerzenbach | 0150810 |
VOI Seengen | 0037312 |
VOI Sempach Stadt | 0077351 |
VOI Siebnen | 0150807 |
VOI Stans | 0077356 |
VOI Steffisburg | 0037337 |
VOI Strengelbach | 0037302 |
VOI Studen | 0037331 |
VOI Sumiswald | 0037318 |
VOI Trimbach | 0037304 |
VOI Unterkulm | 0037326 |
VOI Wabern | 0037313 |
VOI Wallisellen | 0150815 |
VOI Wangen a. Aare | 0037315 |
VOI Wichtrach | 0037333 |
VOI Wilderswil | 0037332 |
VOI Zürich - Grünau | 0150801 |
VOI Zürich - Hönggerstrasse | 0150812 |
VOI Zürich - In der Ey | 0150804 |
VOI Zürich - Leimbach | 0150809 |
VOI Zürich - Paradies | 0150805 |
VOI Zürich - Witikon | 0150800 |
Vacallo-Pizzamigli | 4797346 |
Vallorbe | 0063740 |
Verbano | 4797293 |
Verbier | 0134240 |
Vernier | 4797374 |
Vernier - Arcenter | 0044860 |
Vernier Outlet | 0044870 |
Versoix | 4797368 |
Vevey - Midi Coindet | 0064420 |
Vevey Des 2 Gares | 0063635 |
Vezia | 4797354 |
Villars-Ste-Croix | 4797170 |
Villars-s/Glâne - Cormanon | 0083780 |
Villars-sur-Glâne | 4797105 |
Villars-sur-Ollon | 0063175 |
Villmergen | 0033613 |
Vionnaz | 0137200 |
Visp | 0134480 |
Volketswil | 0150061 |
Volketswil | 4797126 |
Volketswil Fachmärkte | 0150441 |
Vétroz | 0137201 |
Wabern - Chly Wabere | 0034350 |
Wald | 4797086 |
Wald ZH | 0093770 |
Walenstadt | 0090337 |
Walke | 0090346 |
Wallisellen | 0150163 |
Wallisellen - Glattzentrum | 0150670 |
Wallisellen - Husacherstr. | 4797090 |
Wattwil | 0090452 |
Weggis | 0077290 |
Weinbergli Luzern | 0073170 |
Weinfelden | 4797147 |
Weinfelden - Rösslifelsen | 0090455 |
Weinfelden Weststrasse | 0090387 |
Wettingen | 4797217 |
Wettingen - Landstrasse | 0034323 |
Wetzikon - Züri-Oberland-Märt | 0094720 |
Wetzikon-Kempten | 4797291 |
Widnau - Rhydorf-Center | 0090458 |
Wil - Toggenburgerstr. | 4797096 |
Wil - Zürcherstrasse | 4797283 |
Wil Larag | 0090462 |
Wil SG | 0090461 |
Wildegg | 0033793 |
Wilderswil | 4797129 |
Willisau - Chrüzhof | 0073780 |
Windisch | 0033703 |
Windisch | 4797153 |
Winterthur | 4797150 |
Winterthur - Blumenau | 0093610 |
Winterthur - Deutweg | 0093810 |
Winterthur - Grüzepark I | 0096200 |
Winterthur - Grüzepark II | 0096320 |
Winterthur - Hegi | 0093680 |
Winterthur - Neuwiesen | 0094730 |
Winterthur - Obertor | 0093120 |
Winterthur - Oberwinterthur | 0094250 |
Winterthur - Rosenberg | 0094740 |
Winterthur - Rosenberg | 4797069 |
Winterthur - Seen | 0094270 |
Winterthur - Töss | 0094260 |
Winterthur - Wülflingen | 0093690 |
Winterthur - Zürcherstrasse 48 | 4797093 |
Winterthur Bahnhof | 4797029 |
Winterthur In der Au | 4797183 |
Winterthur-Marktgasse | 4797396 |
Winterthur-Seen | 4797271 |
Wittenbach | 0090390 |
Wittenbach | 4797100 |
Wohlen | 0034333 |
Wolhusen - Dorfmärt | 0074320 |
Wollerau Märt Roospark | 0150050 |
Worb | 0034340 |
Wädenswil | 0150252 |
Wädenswil - Seestrasse | 4797269 |
Wädenswil A3 | 4797048 |
Wädenswil Zürisee Center | 0150165 |
Würenlos | 4797036 |
Würenlos | 4797051 |
Yverdon | 4797039 |
Yverdon - Métropole | 0064950 |
Yverdon Sud | 0063750 |
Yvonand | 0063100 |
Zell | 0073810 |
Zermatt | 0134220 |
Zofingen | 0034363 |
Zollikofen | 0033200 |
Zollikofen | 4797273 |
Zollikon - Dorf | 0150177 |
Zollweiden | 0029550 |
Zuchwil | 0033863 |
Zuchwil | 4797082 |
Zug | 4797146 |
Zug - Grabenstrasse | 0073190 |
Zug - Metalli | 0074330 |
Zug Herti | 0073120 |
Zumikon | 0150190 |
Zuzwil | 0090391 |
Zuzwil | 4797298 |
Zweisimmen | 0034411 |
Zwingen | 4797181 |
Zürich - Affoltern | 0150015 |
Zürich - Affoltern | 4797033 |
Zürich - Airport | 0150193 |
Zürich - Albisriederplatz | 0150327 |
Zürich - Albisriederstrasse | 0150814 |
Zürich - Altstetten M-Express | 0150360 |
Zürich - Altstetten Neumarkt | 0150201 |
Zürich - Bahnhof Enge | 0150303 |
Zürich - Birmensdorferstr. | 4797176 |
Zürich - Blumen Bellaria | 0150402 |
Zürich - Brunaupark | 0150665 |
Zürich - Burgwies | 0150117 |
Zürich - City | 0150202 |
Zürich - Farbhof | 4797394 |
Zürich - Flurstr. | 4797095 |
Zürich - Furttal | 4797087 |
Zürich - HB Sihlquai | 0150361 |
Zürich - Hardau | 4797057 |
Zürich - Hauptbahnhof | 0150184 |
Zürich - Hauptbahnhof | 4797011 |
Zürich - Herdern | 0150013 |
Zürich - Hohlstrasse | 4797276 |
Zürich - Hornegg | 4797073 |
Zürich - Höngg | 0150077 |
Zürich - Höschgasse | 0150116 |
Zürich - Kreuzplatz | 0150009 |
Zürich - Lagerstrasse | 4797393 |
Zürich - Leimbach Sihlbogen | 0150183 |
Zürich - Limmatplatz | 0150018 |
Zürich - Manegg | 4797275 |
Zürich - Oerlikon Neumarkt | 0150017 |
Zürich - Puls 5 M-Express | 0150132 |
Zürich - Pünt | 0150122 |
Zürich - Rautistrasse | 4797258 |
Zürich - Rigiplatz | 0150115 |
Zürich - Schaffhauserplatz | 0150312 |
Zürich - Schmiede Wiedikon | 0150120 |
Zürich - Schwamendingen | 0150014 |
Zürich - Seebach | 0150020 |
Zürich - ShopVilleMärt | 0150140 |
Zürich - Sihlcity | 0150448 |
Zürich - Sihlquai | 4797194 |
Zürich - Stadelhofen | 0150007 |
Zürich - Stockerstrasse M-Express | 0150131 |
Zürich - Thurgauerstrasse | 4797092 |
Zürich - Toblerplatz | 0150319 |
Zürich - Triemli | 4797274 |
Zürich - Waffenplatz | 4797030 |
Zürich - Wengihof | 0150010 |
Zürich - Wiedikon M-Märt | 0150016 |
Zürich - Wipkingen | 0150326 |
Zürich - Witikon-Zentrum | 0150011 |
Zürich - Wollishofen | 0150008 |
Zürich-Langstrasse Take Away | 4797322 |
fresh Zürich - Löwenstrasse | 4797390 |
migrolino Bottmingen | 4797441 |
migrolino Reichenbach | 4797319 |
migrolino Zürich Niederdorf | 4797452 |
The cash regisers are harder to find, but looking at a reciept is enough for some assumptions. Going to the self-checkout registers usually returns a code between 250 and 265 but any code should actually work.
The date attribute must be smaller than or equal to todays date and between the starting and ending date of the game (being 31-05-2022 and 20-06-2022). It is formatted without separators and only the tens and unit values of the year: DDMMYY
. (e.g.: 200622
for June 20th 2022)
As a four-digit number, the Bon ID can range from 0000
to 9999
thus giving a range of 10'000 combinations. Any values in this range are valid, the higher the value, the lower the chance of the bon to be used already.
The price attribute is a 9-digit number that can be any value between zero (000000000
) and 999999999
. The last two digits represent the centime, while the first 7 digits are the francs. Contrary to the swiss centime system, the centime does not have to be divisible by five.
Prerequisites: rust compiler and cargo installed
- Clone this repo
- Enter the command line with the repo as cwd
- Execute
cargo build -r
- Download the application from the releases page
- Execute it and follow its instructions:
- Create an account for https://win.migros.ch/promos/de/
- Open the developer options (F12, ctrl+I, or ⌘+I)
- Navigate to the Network tab
- Enter a random bon matching the Description
- Look for a request with the name
play.php
- Click on it
- Scroll down to
Request Headers
- Right click on the
Cookie
-Value - Copy it
- Paste it in the application
- Enter configuration as desired. Empty inputs will be replaced with the default values given.
The code builds and runs on Windows and Linux (both tested) and should compile on MacOS aswell, which has not been tested.
This repo contains scripts that can be used for hacking. The distributor clearly states that the scripts are for education purposes only but provide a fully functional piece of hacking software.
Copyright (c) 2022 @ttschnz
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.