Über dieses Plugin
IDF Event Tickets verbindet The Events Calendar (StellarWP) mit WooCommerce, um Tickets für Veranstaltungen zu verkaufen. Für jedes Event können verschiedene Ticket-Typen mit individueller Kapazität und Preisgestaltung angelegt werden. Nach Kaufabschluss erhalten Kunden eine E-Mail mit individuellen Ticket-Nummern und QR-Codes.
Features
- Ticket-Typen pro Event: Beliebig viele Ticket-Typen (z.B. Standard, VIP, Early Bird) mit individuellen Preisen und Kapazitäten.
- WooCommerce-Integration: Automatische Produkt-Erstellung, Bestandssynchronisation und Bestellverarbeitung über den normalen Checkout.
- QR-Code-Tickets: Eindeutige Ticket-Nummern mit QR-Codes für schnelles Einchecken am Veranstaltungstag.
- Check-in-System: Admin-Oberfläche, Frontend-Shortcode und REST API für flexibles Einchecken.
- E-Mail-Benachrichtigung: Separate Ticket-E-Mail mit allen Details und QR-Codes nach Kaufabschluss.
- Admin-Dashboard: Übersicht aller Events mit Verkaufszahlen, Kapazität und Check-in-Quote.
- REST API: Endpunkte für Ticket-Verifizierung, Check-in, Statistiken und Teilnehmerlisten.
- Kapazitätssteuerung: Individuelle Kapazität pro Ticket-Typ mit automatischer Bestandsverwaltung.
- Verkaufszeitraum: Optionaler Start- und End-Zeitpunkt für den Ticket-Verkauf.
- Shortcode:
[idf_event_checkin]für eine öffentliche Check-in-Seite. - Master-Key-Integration: Automatische Update-Registrierung über den IDF Master-Key. Dependency-Check mit Admin-Notice bei fehlendem Master-Key.
- Voraussetzungen: The Events Calendar (StellarWP) und WooCommerce müssen aktiv sein.
- Uninstall: Optionale vollständige Datenlöschung über die Uninstall-Seite.
IyBDaGFuZ2Vsb2cKCiMjIHYxLjEuNyDigJQgMjAyNi0wNC0zMAoKIyMjIEdlw6RuZGVydAotICoqUHJlaXNhbnplaWdlIGJlaSBrb3N0ZW5sb3NlbiBUaWNrZXRzOioqIFRpY2tldHR5cGVuIG1pdCBQcmVpcyAwIOKCrCBlcnNjaGVpbmVuIGltIEJ1Y2h1bmdzYmxvY2sgamV0enQgbWl0IGRlbSBIaW53ZWlzIOKAnktvc3RlbmZyZWkiIHN0YXR0IOKAnjAsMDAg4oKsIi4gR3JlaWZ0IHNvd29obCBpbiBkZXIgTWVoci1UeXBlbi1BdXN3YWhsIGFscyBhdWNoIGltIFNpbmdsZS1UeXBlLVJlbmRlci4KLSAqKkRlZmF1bHQtSGVhZGxpbmUgdW1iZW5hbm50OioqIOKAnlRpY2tldHMgZsO8ciBkaWVzZW4gVGVybWluIiDihpIg4oCeVGlja2V0cyBmw7xyIGRpZXNlcyBFdmVudCIuIFdlciBkZW4gU2hvcnRjb2RlIG1pdCBlaWdlbmVtIGBoZWFkaW5nPSLigKYiYC1BdHRyaWJ1dCBudXR6dCwgaXN0IG5pY2h0IGJldHJvZmZlbi4KCgojIyB2MS4xLjYg4oCUIDIwMjYtMDQtMzAKCiMjIyBIaW56dWdlZsO8Z3QKLSAqKkRpcmVrdC1VUkwtUmVkaXJlY3Q6KiogV2VyIGRpZSBTaW5nbGUtUHJvZHVjdC1VUkwgZWluZXMgVGlja2V0LVByb2R1a3RzIGF1ZnJ1ZnQgKHouIEIuIGAvcHJvZHVrdC9ldmVudC10aXRlbC12aXAvYCksIHdpcmQgcGVyIDMwMSB6dXIgRXZlbnQtU2VpdGUgdW1nZWxlaXRldC4gRGFtaXQgbMOkdWZ0IGRpZSBCdWNodW5nIGltbWVyIMO8YmVyIGRlbiBgW2lkZl9ldmVudF90aWNrZXRzXWAtQmxvY2ssIG5pY2h0IMO8YmVyIGRpZSByb2hlIFdvby1Qcm9kdWt0c2VpdGUuIEZpbHRlciBgaWRmL2V2ZW50LXRpY2tldHMvcHJvZHVjdF9yZWRpcmVjdF91cmxgIGVybGF1YnQgQ3VzdG9tLVRhcmdldHMuCgojIyMgR2XDpG5kZXJ0Ci0gKipCZWkgYHNvbGRfaW5kaXZpZHVhbGx5YCB3aXJkIGRlciBNZW5nZW4tU3RlcHBlciBrb21wbGV0dCBlcnNldHp0KiogZHVyY2ggZWluIGhpZGRlbiBgcXVhbnRpdHk9MWAtRmllbGQgcGx1cyBkZW4gSGlud2VpcyDigJ5BbnphaGw6IDEgKEVpbnplbHZlcmthdWYpIi4gQmlzaGVyIGhhdHRlIGljaCBudXIgYHJlYWRvbmx5YCBhbSBJbnB1dCB1bmQgYGRpc2FibGVkYCBhbSBQbHVzLUJ1dHRvbiBnZXNldHp0IOKAlCBkYXMgaXN0IEJyb3dzZXItUXVpcmtzIGF1c2dlc2V0enQgKE51bWJlci1JbnB1dC1TcGlubmVyIGlnbm9yaWVydCByZWFkb25seSBpbiBtYW5jaGVuIEJyb3dzZXJuLCBkaXNhYmxlZCBrYW5uIGR1cmNoIFRoZW1lLUNTUyDDvGJlcmtsaWNrYmFyIHdlcmRlbikuIE1pdCBkZW0gbmV1ZW4gTWFya3VwIGdpYnQncyBrZWluZW4gV2VnIG1laHIsIGRpZSBNZW5nZSB6dSDDpG5kZXJuLgoKIyMgdjEuMS41IOKAlCAyMDI2LTA0LTMwCgojIyMgQmVob2JlbgotICoqRnJpc2NoIGFuZ2VsZWd0ZXIgVGlja2V0dHlwIGltIEV2ZW50LUVkaXRvciBlcnpldWd0ZSBrZWluIFdvb0NvbW1lcmNlLVByb2R1a3QqKiAobGF0ZW50IHNlaXQgdjEuMCk6IGBzeW5jX3dvb19wcm9kdWN0c2AgbGllZiBhdWYgYHNhdmVfcG9zdF90cmliZV9ldmVudHNgLVByaW9yaXTDpHQgMTAsIGBzYXZlX3RpY2tldF9tZXRhYm94YCBhdWYgUHJpb3JpdMOkdCAyMC4gRGVyIFN5bmMgc2FoIGRpZSBUaWNrZXR0eXAtTGlzdGUgKipiZXZvcioqIHNhdmVfdGlja2V0X21ldGFib3ggZGllIG5ldWUgWmVpbGUgaW4gZGllIERCIGdlc2NocmllYmVuIGhhdHRlIOKGkiBsZWVyZXIgTG9vcCDihpIga2VpbiBQcm9kdWt0LiBCZWltIHp3ZWl0ZW4gU3BlaWNoZXJuIGjDpHR0ZSBlcyBnZWtsYXBwdCDigJQgYmVpbSBlcnN0ZW4gbmljaHQuIEZpeDogUHJpb3JpdMOkdCB2b24gYHN5bmNfd29vX3Byb2R1Y3RzYCBhdWYgMzAgc2V0emVuLCBkYW1pdCBkZXIgU3luYyBuYWNoIGBzYXZlX3RpY2tldF9tZXRhYm94YCBsw6R1ZnQuCgojIyB2MS4xLjQg4oCUIDIwMjYtMDQtMzAKCiMjIyBIaW56dWdlZsO8Z3QKLSAqKkJpZGlyZWt0aW9uYWxlIEzDtnNjaC1TeW5jIHp3aXNjaGVuIFRpY2tldHR5cCB1bmQgV29vLVByb2R1a3Q6KioKICAtIFdpcmQgZWluIFRpY2tldHR5cCBpbSBFdmVudC1FZGl0b3IgZW50ZmVybnQgKE1ldGFib3gtWmVpbGUgZ2Vsw7ZzY2h0KSwgd2lyZCBkYXMgdmVya27DvHBmdGUgV29vQ29tbWVyY2UtUHJvZHVrdCBhdXRvbWF0aXNjaCBlbmRnw7xsdGlnIGdlbMO2c2NodC4KICAtIFdpcmQgZWluIFdvb0NvbW1lcmNlLVByb2R1a3QgbWl0IGBfaWRmX3RpY2tldF90eXBlX2lkYC1WZXJ3ZWlzIGVuZGfDvGx0aWcgZ2Vsw7ZzY2h0LCB3aXJkIGRlciB6dWdlaMO2cmlnZSBUaWNrZXR0eXAgYXVzIGRlciBQbHVnaW4tREIgZW50ZmVybnQgdW5kIGFsbGUgYWt0aXZlbiBBdHRlbmRlZXMgYXVmIGBjYW5jZWxsZWRgIGdlc2V0enQuCiAgLSBHcmVpZnQgbnVyIGJlaW0gKiplbmRnw7xsdGlnZW4qKiBMw7ZzY2hlbiwgbmljaHQgYmVpbSBUcmFzaC4gVHJhc2ggemVpZ3QgaW0gRnJvbnRlbmQg4oCeTmljaHQgdmVyZsO8Z2JhciIgYW4sIFdpZWRlcmhlcnN0ZWxsdW5nIGJyaW5ndCBhbGxlcyB6dXLDvGNrLgotIFJlLUVudHJ5LVNjaHV0eiBwZXIgendlaSBzdGF0aXNjaGVuIEZsYWdzLCBkYW1pdCBkaWUgYmVpZGVuIEhvb2tzIHNpY2ggbmljaHQgZ2VnZW5zZWl0aWcgZXJuZXV0IGF1c2zDtnNlbi4KCiMjIHYxLjEuMyDigJQgMjAyNi0wNC0zMAoKIyMjIEhpbnp1Z2Vmw7xndAotICoqQmVpdHJhZ3NiaWxkLVN5bmM6KiogRGFzIEZlYXR1cmVkIEltYWdlIGRlcyBFdmVudHMgd2lyZCBiZWltIFNwZWljaGVybiBhdXRvbWF0aXNjaCBhbHMgUHJvZHVrdGJpbGQgaW4gZGFzIHZlcmtuw7xwZnRlIFdvb0NvbW1lcmNlLVByb2R1a3Qgw7xiZXJub21tZW4gKENyZWF0ZSB1bmQgVXBkYXRlKS4KLSAqKlNvbGQtaW5kaXZpZHVhbGx5LVN1cHBvcnQgaW0gQnVjaHVuZ3NibG9jazoqKiBXZW5uIGRhcyBXb28tUHJvZHVrdCDigJ5FaW56ZWx2ZXJrYXVmIOKAlCBudXIgZWlubWFsIHBybyBCZXN0ZWxsdW5nIiBnZXNldHp0IGhhdCwgZml4aWVydCBkZXIgU3RlcHBlciBpbSBCdWNodW5nc2Jsb2NrIGRpZSBNZW5nZSBhdWYgMSAoUGx1cy1CdXR0b24gZGlzYWJsZWQsIElucHV0IHJlYWRvbmx5KS4gR3JlaWZ0IHNvd29obCBiZWltIEluaXRpYWwtUmVuZGVyIGFscyBhdWNoIGJlaW0gVGlja2V0dHlwLVdlY2hzZWwuCgojIyMgQmVob2JlbgotICoqTGFnZXJiZXN0YW5kLVJlc2V0IGJlaSBsYXVmZW5kZW4gVmVya8OkdWZlbjoqKiBCZWltIFNwZWljaGVybiBkZXMgRXZlbnRzIHd1cmRlIGRlciBCZXN0YW5kIGJpc2hlciBibGluZCBhdWYgZGllIEthcGF6aXTDpHQgenVyw7xja2dlc2V0enQg4oCUIGF1Y2ggd2VubiBzY2hvbiBUaWNrZXRzIHZlcmthdWZ0IHdhcmVuLiBgY29tcHV0ZV9zdG9ja19mb3JfdGlja2V0X3R5cGUoKWAgYmVyZWNobmV0IGRlbiBCZXN0YW5kIGpldHp0IGF1cyBLYXBheml0w6R0IG1pbnVzIGFrdGl2ZSBBdHRlbmRlZXMgKFN0YXR1cyAhPSBjYW5jZWxsZWQpLiBEYW1pdCDDvGJlcnNjaHJlaWJ0IGRlciBTeW5jIG5pY2h0IG1laHIgdmVyc2VoZW50bGljaCBkZW4gdm9uIFdvbyBkZWtyZW1lbnRpZXJ0ZW4gQmVzdGFuZC4KCiMjIyBHZcOkbmRlcnQKLSAqKk5hbWUgdW5kIEJlc2NocmVpYnVuZyBqZXR6dCBhdWNoIGJlaW0gVXBkYXRlIHN5bmNocm9uOioqIEJpc2hlciBudXIgYmVpbSBDcmVhdGUgZ2VzZXR6dCDigJQgYmVpIHNww6R0ZXJlbiBFdmVudC1UaXRlbC3DhG5kZXJ1bmdlbiBibGllYiBkYXMgUHJvZHVrdCBhdWYgZGVtIGFsdGVuIFN0YW5kLiBaZW50cmFsZSBIZWxwZXIgYGJ1aWxkX3Byb2R1Y3RfdGl0bGUoKWAgdW5kIGBidWlsZF9wcm9kdWN0X2Rlc2NyaXB0aW9uKClgIGbDvHIga29uc2lzdGVudGUgV2VydGUuCi0gYHVwZGF0ZV93b29fcHJvZHVjdCgpYCBha3plcHRpZXJ0IGpldHp0IGRhcyBFdmVudC1Qb3N0LU9iamVrdCBhbHMgUGFyYW1ldGVyIChmw7xyIEJpbGQgKyBUaXRlbCkuCgojIyB2MS4xLjIg4oCUIDIwMjYtMDQtMzAKCiMjIyBCZWhvYmVuCi0gKipSb290IENhdXNlIGbDvHIg4oCeTmljaHQgdmVyZsO8Z2JhciItQnVnIGltIEJ1Y2h1bmdzYmxvY2s6KiogYElERl9FdmVudF9UaWNrZXRzX1RpY2tldF9NYW5hZ2VyOjp1cGRhdGVfdGlja2V0X3R5cGUoKWAgaGF0dGUgYHdvb19wcm9kdWN0X2lkYCAodW5kIGBzb2xkYCkgTklDSFQgaW4gZGVyIFVwZGF0ZS1XaGl0ZWxpc3QuIERhZHVyY2ggc2NobHVnIGRlciBBdWZydWYgYXVzIGBjbGFzcy13b28taW50ZWdyYXRpb24ucGhwOjpzeW5jX3dvb19wcm9kdWN0cygpYCBuYWNoIGRlbSBBbmxlZ2VuIGVpbmVzIG5ldWVuIFdvby1Qcm9kdWt0cyBzdGlsbCBmZWhsLCBkaWUgVGlja2V0dHlwLVJvdyBibGllYiBkYXVlcmhhZnQgbWl0IGB3b29fcHJvZHVjdF9pZD0wYC4gSW0gRnJvbnRlbmQgZsO8aHJ0ZSBkYXMgenUg4oCeTmljaHQgdmVyZsO8Z2Jhci4iLCB3ZWlsIGB3Y19nZXRfcHJvZHVjdCgwKWAgbmljaHRzIGxpZWZlcnQuCi0gYHVwZGF0ZV93b29fcHJvZHVjdCgpYCByZWNvdmVydCBqZXR6dCwgd2VubiBkYXMgdmVya27DvHBmdGUgV29vLVByb2R1a3Qgendpc2NoZW56ZWl0bGljaCBnZWzDtnNjaHQgd3VyZGUg4oCUIHN0YXR0IHN0aWxsIHp1csO8Y2t6dWtlaHJlbiwgd2lyZCBlaW4gbmV1ZXMgUHJvZHVrdCBhbmdlbGVndCB1bmQgZGllIElEIGtvcnJla3QgaW4gZGVuIFRpY2tldHR5cCBnZXNjaHJpZWJlbi4KCiMjIyBIaW56dWdlZsO8Z3QKLSAqKlNlbGYtSGVhbGluZyBpbSBGcm9udGVuZDoqKiBgcHJlcGFyZV90aWNrZXRfdHlwZSgpYCBzdWNodCBiZWkgZmVobGVuZGVtIFdvby1WZXJ3ZWlzIGF1dG9tYXRpc2NoIGVpbiBwYXNzZW5kZXMgUHJvZHVrdCBwZXIgYF9pZGZfdGlja2V0X3R5cGVfaWRgLU1ldGEgdW5kIHNjaHJlaWJ0IGRpZSBJRCB6dXLDvGNrIGluIGRpZSBEQi4gRGFtaXQgaGVpbGVuIHNpY2ggdmVyd2Fpc3RlIFRpY2tldHR5cC1Sb3dzIGJlaW0gbsOkY2hzdGVuIEZyb250ZW5kLUF1ZnJ1ZiB2b24gc2VsYnN0IOKAlCBrZWluIG1hbnVlbGxlciBSZS1TYXZlIG7DtnRpZy4KLSAqKlBybyBUaWNrZXR0eXAgZWluIGRldGFpbGxpZXJ0ZXIgRGlhZ25vc2UtSFRNTC1Lb21tZW50YXIqKiBtaXQgV2VydGVuIGbDvHIgYGlkYCwgYG5hbWVgLCBgcHJpY2VgLCBgY2FwYWNpdHlgLCBgc29sZGAsIGBhdmFpbGFibGVgLCBgcHJvZHVjdF9pZGAsIGBwcm9kdWN0X3N0YXR1c2AsIGBtYW5hZ2luZ19zdG9ja2AsIGBzdG9ja19xdHlgLCBgc2FsZV9zdGFydGAsIGBzYWxlX2VuZGAsIGBldmVudF9lbmRgLCBgaGVhbGluZ2AgdW5kIGByZWFzb25gLiBEZXIgR3J1bmQgZsO8ciDigJ5OaWNodCB2ZXJmw7xnYmFyIiBpc3QgamV0enQgaW0gVmlldy1Tb3VyY2UgYWJsZXNiYXIuCgojIyMgR2XDpG5kZXJ0Ci0gYHVwZGF0ZV93b29fcHJvZHVjdCgpYCBzY2hyZWlidCBgX2lkZl9ldmVudF9pZGAgdW5kIGBfaWRmX3RpY2tldF90eXBlX2lkYCBhbHMgUHJvZHVrdC1NZXRhIGlkZW1wb3RlbnQgbmFjaCAoc3RhdHQgbnVyIGJlaW0gQ3JlYXRlKSDigJQgcmVsZXZhbnQgZsO8ciBTZWxmLUhlYWxpbmcuCgojIyB2MS4xLjEg4oCUIDIwMjYtMDQtMzAKCiMjIyBCZWhvYmVuCi0gYFtpZGZfZXZlbnRfdGlja2V0c11gIGxpZWZlcnRlIOKAnkbDvHIgZGllc2VuIFRlcm1pbiBzaW5kIGFrdHVlbGwga2VpbmUgVGlja2V0cyBlaW5nZXJpY2h0ZXQiLCBvYndvaGwgTWV0YWJveC1LYXBheml0w6R0IHVuZCBXb28tUHJvZHVrdC1CZXN0YW5kIGtvcnJla3QgZ2VwZmxlZ3Qgd2FyZW4g4oCUIFVyc2FjaGU6IGJlaSBUcmliZS1FdmVudHMtQ2FsZW5kYXItUmVjdXJyaW5nLUV2ZW50cyBsaWVmZXJ0IGBnZXRfdGhlX0lEKClgIGF1ZiBkZXIgVVJMIGRpZSBLaW5kLUluc3RhbnosIGRlciBUaWNrZXR0eXAtREItRWludHJhZyBow6RuZ3QgYWJlciBhbiBkZXIgUGFyZW50LUV2ZW50LUlELgoKIyMjIEdlw6RuZGVydAotIGBJREZfRXZlbnRfVGlja2V0c19Gcm9udGVuZGAgbMO2c3QgZGllIEV2ZW50LUlEIGpldHp0IHNjaHJpdHR3ZWlzZSBhdWY6ICgxKSBwb3N0X3BhcmVudC1LZXR0ZSBob2NobGF1ZmVuIChtYXguIDUgU2Nocml0dGUpLCAoMikgYF9FdmVudE9yaWdpbmFsUGFyZW50YC1NZXRhIHZvbiBUcmliZS1FdmVudHMtUFJPLCAoMykgRmFsbGJhY2sgcGVyIFdvby1Qcm9kdWt0LU1ldGEgYF9pZGZfZXZlbnRfaWRgLgotIEhUTUwtRGlhZ25vc2UtS29tbWVudGFyIGltIGdlcmVuZGVydGVuIEJsb2NrIChgPCEtLSBpZGYtZXZlbnQtdGlja2V0czogZXZlbnRfaWQ94oCmIHJlc29sdmVkPeKApiBzdHJhdGVneT3igKYgLS0+YCkgenVyIEZlaGxlcnN1Y2hlIGltIFBhZ2UtU291cmNlLgoKIyMgdjEuMS4wIOKAlCAyMDI2LTA0LTMwCgojIyMgSGluenVnZWbDvGd0Ci0gTmV1ZXIgRnJvbnRlbmQtU2hvcnRjb2RlIGBbaWRmX2V2ZW50X3RpY2tldHNdYCBmw7xyIGRlbiBCdWNodW5ncy1CbG9jayBhdWYgRXZlbnQtU2VpdGVuLiBBdWYgZWluZXIgRXZlbnQtU2luZ2xlLVBhZ2Ugd2lyZCBkaWUgRXZlbnQtSUQgYXV0b21hdGlzY2ggZXJrYW5udDsgYXXDn2VyaGFsYiBrYW5uIHNpZSDDvGJlciBgZXZlbnRfaWQ9IuKApiJgIGdlc2V0enQgd2VyZGVuLgotIE1laHJlcmUgVGlja2V0dHlwZW4gKFN0YW5kYXJkLCBWSVAsIEVhcmx5IEJpcmQpIHdlcmRlbiBpbiBlaW5lbSBCbG9jayBhbHMgQXVzd2FobCAoUmFkaW9zKSBnZXJlbmRlcnQgbWl0IGdlbWVpbnNhbWVtIE1lbmdlbi1TdGVwcGVyIHVuZCBBZGQtdG8tQ2FydC4KLSBWZXJrYXVmc3plaXRyYXVtIChgc2FsZV9zdGFydGAvYHNhbGVfZW5kYCkgdW5kIEV2ZW50LUVuZGUgd2VyZGVuIHJlc3Bla3RpZXJ0OiBhdcOfZXJoYWxiIGRlcyBaZWl0ZmVuc3RlcnMga2VpbmUgQnVjaHVuZyBtw7ZnbGljaCAobWl0IEhpbndlaXN0ZXh0KS4KLSBWZXJmw7xnYmFya2VpdCB3aXJkIGxpdmUgYXVzIGRlbSBXb29Db21tZXJjZS1Qcm9kdWt0LUJlc3RhbmQgZXJtaXR0ZWx0IChGYWxsYmFjazogS2FwYXppdMOkdCDiiJIgdmVya2F1ZnQpLgotIEFzc2V0LUxhenktTG9hZGluZzogRnJvbnRlbmQtQ1NTL0pTIHdlcmRlbiBudXIgYXVzZ2VsaWVmZXJ0LCB3ZW5uIGRlciBTaG9ydGNvZGUgYXVmIGRlciBTZWl0ZSB2b3Jrb21tdC4KCiMjIyBHZcOkbmRlcnQKLSBQbHVnaW4gbMOkZHQgenVzw6R0emxpY2ggYGluY2x1ZGVzL2NsYXNzLWZyb250ZW5kLnBocGAgdW5kIGluaXRpYWxpc2llcnQgYElERl9FdmVudF9UaWNrZXRzX0Zyb250ZW5kYC4KCiMjIHYxLjAuNgoKIyMjIEdlw6RuZGVydAotIEF1ZiBHaXQtYmFzaWVydGVzIERlcGxveW1lbnQgbWlncmllcnQgKGlkZi1jaSBXb3JrZmxvdywgYHJlYWRtZS50eHRgICsgYENIQU5HRUxPRy5tZGAgYWxzIFBmbGljaHRkYXRlaWVuKS4KCiMjIHYxLjAuNQoKIyMjIEJlaG9iZW4KLSBXb29Db21tZXJjZS0vRXZlbnRzLUNhbGVuZGFyLUhpbndlaXMgZXJzY2hpZW4gbmljaHQgd2VubiBNYXN0ZXItS2V5IGZlaGx0ZS4KLSBNYXN0ZXItS2V5LUNoZWNrIGlzdCBqZXR6dCBub24tYmxvY2tpbmcg4oCUIFBsdWdpbiBmdW5rdGlvbmllcnQgYXVjaCBvaG5lIE1hc3Rlci1LZXkuCgojIyB2MS4wLjQKCiMjIyBCZWhvYmVuCi0gRGFzaGJvYXJkIHplaWd0ZSBrZWluZSBFdmVudHMgbWl0IFRpY2tldHMgYW4gKGZhbHNjaGUgU3BhbHRlbi1SZWZlcmVueiBpbiBgZ2V0X2V2ZW50X3N0YXRzKClgKS4KCiMjIHYxLjAuMwoKIyMjIEJlaG9iZW4KLSBGYXRhbCBFcnJvciDigJ5DYW5ub3QgcmVkZWNsYXJlIGNsYXNzIElERl9EZXBlbmRlbmN5X0NoZWNrZXIiIChEZXBlbmRlbmN5LUNoZWNrZXIgYXVmIHYxLjUuMikuCi0gRHVwbGljYXRlLUtleS1CdWcgaW4gQWN0aXZhdG9yIChgS0VZIHRpY2tldF9udW1iZXJgIGtvbGxpZGllcnRlIG1pdCBgVU5JUVVFYC1Db25zdHJhaW50KS4KCiMjIHYxLjAuMgoKIyMjIEdlw6RuZGVydAotIERlcGVuZGVuY3ktQ2hlY2tlciBhdWYgdjEuNS4xLgotIGBwbHVnaW5zX2xvYWRlZGAtUHJpb3JpdMOkdCB2b24gMjAgYXVmIDE1IChBcmNoaXRla3R1ci1TdGFuZGFyZCkuCi0gQWN0aXZhdGlvbi9EZWFjdGl2YXRpb24tSG9va3MgYXVmIENsb3N1cmVzIG1pdCBJbmxpbmUtSW5jbHVkZXMgdW1nZXN0ZWxsdC4KCiMjIHYxLjAuMQoKIyMjIEJlaG9iZW4KLSBGYXRhbCBFcnJvciBiZWkgQWt0aXZpZXJ1bmcgd2VnZW4gZG9wcGVsdGVyIEtsYXNzZW5kZWtsYXJhdGlvbiBtaXQgTWFzdGVyLUtleS4KLSBEZXBlbmRlbmN5LUNoZWNrcyB1bmQgSW5jbHVkZXMgaW4gYHBsdWdpbnNfbG9hZGVkYCB2ZXJzY2hvYmVuLgoKIyMgdjEuMC4wCgojIyMgSGluenVnZWbDvGd0Ci0gRXJzdGVyIFJlbGVhc2UuCi0gVGlja2V0LVR5cGVuIHBybyBFdmVudCAoTmFtZSwgUHJlaXMsIEthcGF6aXTDpHQsIFZlcmthdWZzemVpdHJhdW0pLgotIFdvb0NvbW1lcmNlLUludGVncmF0aW9uIChhdXRvbWF0aXNjaGUgUHJvZHVrdC1FcnN0ZWxsdW5nLCBCZXN0ZWxsdmVyYXJiZWl0dW5nKS4KLSBUaWNrZXQtR2VuZXJpZXJ1bmcgbWl0IGVpbmRldXRpZ2VyIE51bW1lciB1bmQgUVItQ29kZS4KLSBDaGVjay1pbi1TeXN0ZW0gKEFkbWluLCBGcm9udGVuZC1TaG9ydGNvZGUgYFtpZGZfZXZlbnRfY2hlY2tpbl1gLCBSRVNUIEFQSSkuCi0gRS1NYWlsLUJlbmFjaHJpY2h0aWd1bmcgbWl0IFRpY2tldC1EZXRhaWxzLgotIEFkbWluLURhc2hib2FyZCBtaXQgVmVya2F1ZnPDvGJlcnNpY2h0LgotIFVuaW5zdGFsbC1TZWl0ZSBtaXQgb3B0aW9uYWxlciBEYXRlbmzDtnNjaHVuZy4K