@psdk/device-ble-taro 0.5.4 → 0.5.5
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/dist/index.js +1 -10169
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAiCA;AACA;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC96JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACNA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././build/connected.js",".././build/index.js",".././build/provider.js","../../bluetooth-traits/build/helpers.js","../../bluetooth-traits/build/index.js","../../bluetooth-traits/build/traits.js","../../bluetooth-traits/build/types.js","../../../frame/father/build/device/adapter/connected_device.js","../../../frame/father/build/device/adapter/index.js","../../../frame/father/build/device/adapter/types.js","../../../frame/father/build/father/PSDK.js","../../../frame/father/build/father/args/arg.js","../../../frame/father/build/father/args/common/easy.js","../../../frame/father/build/father/args/common/raw.js","../../../frame/father/build/father/args/index.js","../../../frame/father/build/father/command/index.js","../../../frame/father/build/father/command/print/command.js","../../../frame/father/build/father/command/print/command_clause.js","../../../frame/father/build/father/command/print/commander.js","../../../frame/father/build/father/command/single/appendat.js","../../../frame/father/build/father/command/single/binary_command.js","../../../frame/father/build/father/command/single/single_command.js","../../../frame/father/build/father/device/write_operation.js","../../../frame/father/build/father/index.js","../../../frame/father/build/father/types/hex_output.js","../../../frame/father/build/father/types/index.js","../../../frame/father/build/father/types/lifecycle.js","../../../frame/father/build/father/types/psdk_const.js","../../../frame/father/build/father/types/write.js","../../../frame/father/build/index.js","../../../frame/father/build/toolkit/base64.js","../../../frame/father/build/toolkit/byte.js","../../../frame/father/build/toolkit/checker.js","../../../frame/father/build/toolkit/gbk.js","../../../frame/father/build/toolkit/index.js","../../../frame/father/build/toolkit/pcollection.js","../../../frame/father/build/toolkit/pimage.js","../../../frame/father/build/toolkit/pvariable.js","../../../node_modules/@tarojs/api/dist/index.cjs.js","../../../node_modules/tslib/modules/index.js","../../../node_modules/@tarojs/runtime/dist/runtime.esm.js","../../../node_modules/@tarojs/shared/dist/index.cjs.js","../../../node_modules/@tarojs/taro/index.js","../../../node_modules/await-timeout/src/index.js","../../../node_modules/await-timeout/src/utils.js","../../../node_modules/tslib/tslib.js","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TaroBleConnectedDevice = void 0;\nconst frame_father_1 = require(\"@psdk/frame-father\");\nconst await_timeout_1 = __importDefault(require(\"await-timeout\"));\nconst taro_1 = __importDefault(require(\"@tarojs/taro\"));\nclass TaroBleConnectedDevice {\n device;\n scpair;\n _connectionState;\n dataOfRead;\n notifyCallback;\n constructor(options) {\n this.device = options.device;\n this.scpair = options.scpair;\n this._connectionState = frame_father_1.ConnectionState.CONNECTED;\n this.dataOfRead = [];\n this.doListen();\n }\n notify(callback) {\n this.notifyCallback = callback;\n }\n doListen() {\n if (this.scpair.read == null)\n return;\n taro_1.default.onBLECharacteristicValueChange(async (value) => {\n // this.dataOfRead.push(value)\n if (this.notifyCallback) {\n await this.notifyCallback(value);\n }\n });\n taro_1.default.onBLEConnectionStateChange(value => {\n this._connectionState = value.connected ? frame_father_1.ConnectionState.CONNECTED : frame_father_1.ConnectionState.DISCONNECTED;\n });\n taro_1.default.notifyBLECharacteristicValueChange({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.read.uuid,\n state: true,\n success: result => console.log(result),\n // @ts-ignore\n fail: (e) => console.error(e),\n });\n }\n async realRead() {\n return new Promise((resolve, reject) => {\n if (this.scpair.read == null) {\n reject(`the connect device not support read operation: service id: [${this.scpair.service.uuid}]`);\n return;\n }\n taro_1.default.readBLECharacteristicValue({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.read.uuid,\n success: result => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n origin() {\n return this.device;\n }\n connectionState() {\n return this._connectionState;\n }\n deviceName() {\n return this.device.localName || this.device.name || 'NONE';\n }\n async disconnect() {\n return new Promise((resolve, reject) => {\n taro_1.default.closeBLEConnection({\n deviceId: this.device.deviceId,\n success: () => {\n this.device = null;\n this.scpair = null;\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n canRead() {\n return this.scpair.read != null;\n }\n async read(options) {\n if (this.dataOfRead.length > 0) {\n this.dataOfRead.splice(0, this.dataOfRead.length);\n }\n await this.realRead();\n const timeout = (options?.timeout ?? 5000);\n const startTime = +new Date();\n while (true) {\n const now = +new Date();\n if (now - startTime > timeout) {\n return new Uint8Array([]);\n }\n if (this.dataOfRead.length == 0) {\n await await_timeout_1.default.set(100);\n continue;\n }\n const data = this.dataOfRead.pop();\n const value = data.value;\n return new Uint8Array(value);\n }\n }\n async write(data) {\n return new Promise((resolve, reject) => {\n taro_1.default.writeBLECharacteristicValue({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.write.uuid,\n // @ts-ignore\n value: data.buffer,\n success: result => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n flush() {\n this.dataOfRead.splice(0, this.dataOfRead.length);\n }\n}\nexports.TaroBleConnectedDevice = TaroBleConnectedDevice;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./connected\"), exports);\n__exportStar(require(\"./provider\"), exports);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TaroBleBluetooth = void 0;\nconst device_bluetooth_traits_1 = require(\"@psdk/device-bluetooth-traits\");\nconst frame_father_1 = require(\"@psdk/frame-father\");\nconst await_timeout_1 = __importDefault(require(\"await-timeout\"));\nconst connected_1 = require(\"./connected\");\nconst taro_1 = __importDefault(require(\"@tarojs/taro\"));\nclass TaroBleBluetooth extends device_bluetooth_traits_1.Jluetooth {\n options;\n discoveredCallback;\n connectedDevice;\n constructor(options) {\n super();\n this.options = options;\n this.onBluetoothDeviceFound();\n }\n isConnected() {\n if (!this.connectedDevice)\n return false;\n return this.connectedDevice.connectionState() === frame_father_1.ConnectionState.CONNECTED;\n }\n async bluetoothAdapterState() {\n return new Promise((resolve, reject) => {\n taro_1.default.getBluetoothAdapterState({\n success: (r) => resolve(r),\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n async connect(device, options) {\n if (this.isConnected()) {\n if (!(options?.autoSwitchDevice ?? false)) {\n return this.connectedDevice;\n }\n await this.connectedDevice.disconnect();\n }\n const origin = device.origin;\n await this.createBLEConnection({ deviceId: origin.deviceId, timeout: options?.timeout, });\n await await_timeout_1.default.set(500);\n const services = await this.getBLEDeviceServices({ deviceId: origin.deviceId });\n const scpair = await this.findSCPair({\n deviceId: origin.deviceId,\n services,\n });\n if (!scpair) {\n return Promise.reject(`Can not get write characteristic by device: ${device.name}`);\n }\n this.connectedDevice = new connected_1.TaroBleConnectedDevice({\n device: origin,\n scpair,\n });\n await this.stopDiscovery();\n return Promise.resolve(this.connectedDevice);\n }\n discovered(callback) {\n this.discoveredCallback = callback;\n }\n async startDiscovery() {\n await this.requestLocation();\n await this.closeBluetoothAdapter();\n await await_timeout_1.default.set(300);\n await this.openBluetoothAdapter();\n const state = await this.bluetoothAdapterState();\n if (!state.available) {\n await await_timeout_1.default.set(500);\n }\n if (state.discovering) {\n await this.stopDiscovery();\n await await_timeout_1.default.set(500);\n }\n return new Promise((resolve, reject) => {\n taro_1.default.startBluetoothDevicesDiscovery({\n // services: this.allowServices,\n allowDuplicatesKey: false,\n interval: 0,\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n // complete: () => resolve(),\n });\n });\n }\n async stopDiscovery() {\n return new Promise((resolve, reject) => {\n taro_1.default.stopBluetoothDevicesDiscovery({\n success: (result) => resolve(result),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n // ### inner function\n async openBluetoothAdapter() {\n return new Promise((resolve, reject) => {\n taro_1.default.openBluetoothAdapter({\n success: (ret) => {\n if (ret.errMsg && ret.errMsg.indexOf('ok') == -1) {\n reject(ret);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n async closeBluetoothAdapter() {\n return new Promise((resolve, reject) => {\n taro_1.default.closeBluetoothAdapter({\n success: (ret) => {\n if (ret.errMsg && ret.errMsg.indexOf('ok') == -1) {\n reject(ret);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n onBluetoothDeviceFound() {\n taro_1.default.onBluetoothDeviceFound(async (result) => {\n const foundDevices = result.devices;\n if (!foundDevices.length) {\n return;\n }\n const devices = foundDevices\n .filter(item => {\n const name = item.name || item.localName;\n if (name)\n return true;\n return this.options?.allowNoName ?? true;\n })\n .map(item => new device_bluetooth_traits_1.JluetoothDevice({\n origin: item,\n name: item.name || item.localName,\n deviceId: item.deviceId,\n }));\n if (!devices.length) {\n return;\n }\n if (this.discoveredCallback) {\n await this.discoveredCallback(devices);\n }\n });\n }\n async createBLEConnection(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.createBLEConnection({\n deviceId: options.deviceId,\n timeout: options.timeout,\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async getBLEDeviceServices(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.getBLEDeviceServices({\n deviceId: options.deviceId,\n success: (result) => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve(result.services);\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async getBLEDeviceCharacteristics(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.getBLEDeviceCharacteristics({\n deviceId: options.deviceId,\n serviceId: options.serviceId,\n success: (result) => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve(result.characteristics);\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async requestLocation() {\n return new Promise((resolve, reject) => {\n // Taro.authorize({\n // scope: 'scope.userLocation',\n // success: () => resolve(),\n // // @ts-ignore\n // fail: (e) => reject(e),\n // });\n taro_1.default.getLocation({\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async findSCPair(options) {\n // fill data\n const _characteristicsMap = new Map();\n for (const service of options.services) {\n const characteristics = await this.getBLEDeviceCharacteristics({\n deviceId: options.deviceId,\n serviceId: service.uuid,\n });\n _characteristicsMap.set(service.uuid, characteristics);\n }\n // use special first\n if (this.options?.allowedWriteCharacteristic && this.options?.allowedReadCharacteristic) {\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n let writeCharacteristic = null;\n let readCharacteristic = null;\n for (const characteristic of characteristics) {\n if (this.options?.allowedWriteCharacteristic.toLowerCase() == characteristic.uuid.toLowerCase()) {\n writeCharacteristic = characteristic;\n }\n }\n for (const characteristic of characteristics) {\n if (this.options?.allowedReadCharacteristic.toLowerCase() == characteristic.uuid.toLowerCase()) {\n readCharacteristic = characteristic;\n }\n }\n if (writeCharacteristic != null && readCharacteristic != null) {\n return {\n service,\n write: writeCharacteristic,\n read: readCharacteristic,\n };\n }\n }\n }\n // choose best characteristic\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n // let readCharacteristic: GetBLEDeviceCharacteristicsSuccessData;\n // let writeCharacteristic: GetBLEDeviceCharacteristicsSuccessData;\n const pickedCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write && (properties.notify);\n });\n if (pickedCharacteristic) {\n return {\n service,\n write: pickedCharacteristic,\n read: pickedCharacteristic,\n };\n }\n }\n if (this.options?.allowDetectDifferentCharacteristic ?? true) {\n // choose different characteristic with write and read properties\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n const writeCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write;\n });\n const readCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n return (properties.notify);\n });\n if (writeCharacteristic && readCharacteristic) {\n return {\n service,\n write: writeCharacteristic,\n read: readCharacteristic,\n };\n }\n }\n }\n else {\n // only write\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n const writeCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write;\n });\n if (writeCharacteristic) {\n return {\n service,\n write: writeCharacteristic,\n };\n }\n }\n }\n }\n}\nexports.TaroBleBluetooth = TaroBleBluetooth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TBluetoothHelpers = void 0;\nconst types_1 = require(\"./types\");\nclass TBluetoothHelpers {\n static isAllowService(serviceUUID, allowService) {\n return this.isAllowServices(serviceUUID, allowService && [allowService]);\n }\n static isAllowServices(serviceUUID, allowServices) {\n if (allowServices == undefined)\n return true;\n for (const allowService of allowServices) {\n const rule = allowService.rule ?? types_1.AllowRule.EQUALS;\n switch (rule) {\n case types_1.AllowRule.EQUALS: {\n if (serviceUUID == allowService.uuid)\n return true;\n break;\n }\n case types_1.AllowRule.START_WITH: {\n if (serviceUUID.startsWith(allowService.uuid))\n return true;\n break;\n }\n case types_1.AllowRule.END_WITH: {\n if (serviceUUID.endsWith(allowService.uuid))\n return true;\n break;\n }\n case types_1.AllowRule.REGEX: {\n if (new RegExp(allowService.uuid).test(serviceUUID))\n return true;\n break;\n }\n }\n }\n }\n}\nexports.TBluetoothHelpers = TBluetoothHelpers;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./traits\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Jluetooth = void 0;\n/**\n * absctract bluetooth class\n */\nclass Jluetooth {\n async isDiscovery() {\n const state = await this.bluetoothAdapterState();\n return state.discovering || false;\n }\n}\nexports.Jluetooth = Jluetooth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AllowRule = exports.JluetoothDevice = void 0;\nclass JluetoothDevice {\n origin;\n name;\n deviceId;\n constructor(options) {\n this.origin = options.origin;\n this.name = options.name;\n this.deviceId = options.deviceId;\n }\n}\nexports.JluetoothDevice = JluetoothDevice;\nvar AllowRule;\n(function (AllowRule) {\n AllowRule[\"EQUALS\"] = \"EQUALS\";\n AllowRule[\"START_WITH\"] = \"START_WITH\";\n AllowRule[\"END_WITH\"] = \"END_WITH\";\n AllowRule[\"REGEX\"] = \"REGEX\";\n})(AllowRule || (exports.AllowRule = AllowRule = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FakeConnectedDevice = void 0;\n/**\n * Connected device\n */\nconst types_1 = require(\"./types\");\nconst father_1 = require(\"../../father\");\n/**\n * Fake connected device\n */\nclass FakeConnectedDevice {\n origin() {\n return \"FAKE-DEVICE\";\n }\n connectionState() {\n return types_1.ConnectionState.CONNECTED;\n }\n deviceName() {\n return \"FAKE-DEVICE\";\n }\n async disconnect() {\n }\n canRead() {\n return true;\n }\n async read(options) {\n return father_1.PsdkConst.EMPTY_BYTES;\n }\n async write(data) {\n console.log('WRITE: ', data);\n }\n flush() {\n }\n}\nexports.FakeConnectedDevice = FakeConnectedDevice;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./connected_device\"), exports);\n__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadOptions = exports.WroteReporter = exports.ConnectionState = void 0;\n/**\n * Connection state\n */\nvar ConnectionState;\n(function (ConnectionState) {\n /**\n * connected\n */\n ConnectionState[\"CONNECTED\"] = \"CONNECTED\";\n /**\n * disconnect\n */\n ConnectionState[\"DISCONNECTED\"] = \"DISCONNECTED\";\n})(ConnectionState || (exports.ConnectionState = ConnectionState = {}));\n/**\n * Wrote reporter\n */\nclass WroteReporter {\n ok;\n binary;\n controlExit;\n exception;\n constructor(\n /**\n * Wrote is ok\n */\n ok, \n /**\n * Wrote data\n */\n binary, \n /**\n * control exit\n */\n controlExit, \n /**\n * exception\n */\n exception) {\n this.ok = ok;\n this.binary = binary;\n this.controlExit = controlExit;\n this.exception = exception;\n }\n}\nexports.WroteReporter = WroteReporter;\n/**\n * Read options\n */\nclass ReadOptions {\n timeout;\n constructor(options) {\n this.timeout = options?.timeout;\n }\n}\nexports.ReadOptions = ReadOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PSDK = void 0;\nconst types_1 = require(\"./types\");\nconst write_operation_1 = require(\"./device/write_operation\");\nclass PSDK {\n /**\n * sdk version\n */\n sversion() {\n return '0.2.67';\n }\n /**\n * authors\n */\n authors() {\n return types_1.PsdkConst.DEF_AUTHORS;\n }\n /**\n * Push raw command\n * @param raw raw\n */\n raw(raw) {\n this.commander().pushArg(raw);\n return this;\n }\n /**\n * Put variable\n * @param name name\n * @param value value\n */\n variable(name, value) {\n this.commander().variable(name, value);\n return this;\n }\n /**\n * get command\n */\n command() {\n return this.commander().command();\n }\n /**\n * Clear command\n */\n clear() {\n this.commander().clear();\n return this;\n }\n /**\n * Write data to device\n */\n async write(options) {\n const connectedDevice = this.connectedDevice();\n if (!connectedDevice)\n throw Error('It\\'s seems you missing to set connectedDevice');\n options = options ?? types_1.WriteOptions.def();\n const command = this.command();\n const binary = command.binary();\n const operation = new write_operation_1.DataWriteOperation(options, binary, connectedDevice);\n const reporter = await operation.write();\n this.clear();\n return reporter;\n }\n /**\n * Newline command\n */\n newline() {\n this.commander().newline();\n return this;\n }\n /**\n * Push command\n * @param command\n */\n push(command) {\n this.commander().pushArg(command);\n return this;\n }\n}\nexports.PSDK = PSDK;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicArg = void 0;\nconst types_1 = require(\"../types\");\nclass BasicArg {\n newline() {\n return types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n }\n}\nexports.BasicArg = BasicArg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OnlyTextHeaderArg = exports.OnlyBinaryHeaderArg = exports.EasyArg = void 0;\nconst arg_1 = require(\"../arg\");\nconst command_1 = require(\"../../command\");\n/**\n * Easy argument abstract class\n */\nclass EasyArg extends arg_1.BasicArg {\n prependClauses;\n appendClauses;\n constructor() {\n super();\n this.prependClauses = [];\n this.appendClauses = [];\n }\n /**\n * Append another argument for this clause\n * @param arg\n */\n append(arg) {\n this.appendClauses.push(...arg.clauses());\n return this;\n }\n /**\n * Prepend another argument for this clause\n * @param arg\n */\n prepend(arg) {\n this.prependClauses.push(...arg.clauses());\n return this;\n }\n /**\n * Get current command clauses\n */\n clauses() {\n const clause = this.clause();\n const currentClauses = [];\n if (clause.type !== command_1.ClauseType.NONE) {\n currentClauses.push(clause);\n if (this.newline()) {\n currentClauses.push(command_1.CommandClause.newline());\n }\n }\n return [\n ...this.prependClauses,\n ...currentClauses,\n ...this.appendClauses,\n ];\n }\n clear() {\n this.prependClauses.splice(0, this.prependClauses.length);\n this.appendClauses.splice(0, this.appendClauses.length);\n }\n}\nexports.EasyArg = EasyArg;\nclass OnlyBinaryHeaderArg extends EasyArg {\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n return command_1.CommandClause.binary(this.header());\n }\n newline() {\n return false;\n }\n}\nexports.OnlyBinaryHeaderArg = OnlyBinaryHeaderArg;\nclass OnlyTextHeaderArg extends EasyArg {\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n return command_1.CommandClause.text(this.header());\n }\n}\nexports.OnlyTextHeaderArg = OnlyTextHeaderArg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RawMode = exports.Raw = void 0;\nconst easy_1 = require(\"./easy\");\nconst command_1 = require(\"../../command\");\nconst types_1 = require(\"../../types\");\nclass Raw extends easy_1.EasyArg {\n _mode;\n _text;\n _charset;\n _binary;\n _newline = types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n constructor() {\n super();\n }\n static text(text, options) {\n const raw = new Raw();\n raw._mode = RawMode.TEXT;\n raw._text = text;\n raw._charset = options?.charset ?? types_1.PsdkConst.DEF_CHARSET;\n raw._newline = options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n return raw;\n }\n static binary(binary, options) {\n const raw = new Raw();\n raw._mode = RawMode.BINARY;\n raw._binary = binary;\n raw._charset = options?.charset ?? types_1.PsdkConst.DEF_CHARSET;\n raw._newline = options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n return raw;\n }\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n let clause;\n switch (this._mode) {\n case RawMode.TEXT:\n clause = command_1.CommandClause.text(this._text, this._charset);\n break;\n case RawMode.BINARY:\n clause = command_1.CommandClause.binary(this._binary);\n break;\n default:\n clause = command_1.CommandClause.none();\n break;\n }\n return clause;\n }\n header() {\n return types_1.PsdkConst.EMPTY_BYTES;\n }\n newline() {\n return this._newline;\n }\n}\nexports.Raw = Raw;\nvar RawMode;\n(function (RawMode) {\n RawMode[\"BINARY\"] = \"BINARY\";\n RawMode[\"TEXT\"] = \"TEXT\";\n})(RawMode || (exports.RawMode = RawMode = {}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./arg\"), exports);\n__exportStar(require(\"./common/easy\"), exports);\n__exportStar(require(\"./common/raw\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./print/command\"), exports);\n__exportStar(require(\"./print/commander\"), exports);\n__exportStar(require(\"./print/command_clause\"), exports);\n__exportStar(require(\"./single/appendat\"), exports);\n__exportStar(require(\"./single/binary_command\"), exports);\n__exportStar(require(\"./single/single_command\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultCommand = exports.BasicCommand = void 0;\n/**\n * All printer sdk command interface\n */\nconst types_1 = require(\"../../types\");\nconst base64_1 = require(\"../../../toolkit/base64\");\nconst command_clause_1 = require(\"./command_clause\");\nconst toolkit_1 = require(\"../../../toolkit\");\nclass BasicCommand {\n base64() {\n return base64_1.Base64.fromUint8Array(this.binary());\n }\n}\nexports.BasicCommand = BasicCommand;\nclass DefaultCommand extends BasicCommand {\n bytes;\n constructor(clauses, variable) {\n super();\n let bytes = [];\n for (const clause of clauses) {\n switch (clause.type) {\n case command_clause_1.ClauseType.TEXT:\n const t = toolkit_1.PVariableKit.replace(clause.text, variable);\n //# use gbk encoding\n // const t_buffer = iconv.encode(t, clause.charset ?? PsdkConst.DEF_CHARSET);\n const t_buffer = toolkit_1.FastGBK.encode(t);\n const t_binary = Array.prototype.slice.call(t_buffer, 0);\n bytes = bytes.concat(t_binary);\n //# use utf8 encoding\n // const t_binary = ByteKit.textToU8A(t)\n // const array = Array.from(t_binary)\n // bytes.push(...array);\n break;\n case command_clause_1.ClauseType.NEWLINE:\n case command_clause_1.ClauseType.BINARY:\n const b = Array.from(clause.binary ?? types_1.PsdkConst.EMPTY_BYTES);\n bytes = bytes.concat(b);\n break;\n }\n }\n this.bytes = new Uint8Array(bytes);\n }\n binary() {\n return this.bytes;\n }\n hex(output) {\n return (output ?? types_1.HexOutput.def()).format(this.binary());\n }\n string(charset) {\n // const buffer = Array.from(this.binary());\n // @ts-ignore\n // return iconv.decode(buffer, charset ?? PsdkConst.DEF_CHARSET);\n // return gbkDecoder.decode(this.binary());\n return toolkit_1.FastGBK.decode(this.binary());\n }\n}\nexports.DefaultCommand = DefaultCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CommandClause = exports.ClauseType = void 0;\nconst types_1 = require(\"../../types\");\nvar ClauseType;\n(function (ClauseType) {\n ClauseType[\"TEXT\"] = \"TEXT\";\n ClauseType[\"BINARY\"] = \"BINARY\";\n ClauseType[\"NEWLINE\"] = \"NEWLINE\";\n ClauseType[\"NONE\"] = \"NONE\";\n})(ClauseType || (exports.ClauseType = ClauseType = {}));\nclass CommandClause {\n /**\n * Clause type\n * @private\n */\n _type;\n /**\n * Text command\n * @private\n */\n _text;\n /**\n * Charset\n * @private\n */\n _charset;\n /**\n * Binary command\n * @private\n */\n _binary;\n constructor(type, text, charset, binary) {\n this._type = type;\n this._text = text;\n this._charset = charset;\n this._binary = binary;\n }\n static text(command, charset = types_1.PsdkConst.DEF_CHARSET) {\n return new CommandClause(ClauseType.TEXT, command, charset, undefined);\n }\n static binary(binary) {\n return new CommandClause(ClauseType.BINARY, undefined, undefined, binary);\n }\n static newline() {\n return new CommandClause(ClauseType.NEWLINE, undefined, undefined, types_1.PsdkConst.DEF_NEWLINE_BINARY);\n }\n static none() {\n return new CommandClause(ClauseType.NONE, undefined, undefined, undefined);\n }\n get type() {\n return this._type;\n }\n get text() {\n return this._text;\n }\n get charset() {\n return this._charset;\n }\n get binary() {\n return this._binary;\n }\n}\nexports.CommandClause = CommandClause;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Commander = void 0;\nconst command_clause_1 = require(\"./command_clause\");\nconst types_1 = require(\"../../types\");\nconst command_1 = require(\"./command\");\n/**\n * Command builder\n */\nclass Commander {\n /**\n * Command clauses\n * @private\n */\n clauses;\n _variable;\n constructor() {\n this.clauses = [];\n this._variable = new Map();\n }\n /**\n * Make a commander\n */\n static make() {\n return new Commander();\n }\n /**\n * Push a text command\n * @param command command\n * @param options Options: { newline: newline, charset: charset }\n */\n pushText(command, options) {\n if (command.startsWith(types_1.PsdkConst.CRLF)) {\n command = command.substring(2);\n }\n const clause = command_clause_1.CommandClause.text(command, options?.charset ?? types_1.PsdkConst.DEF_CHARSET);\n return this.pushClause(clause, options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE);\n }\n /**\n * Push binary command\n * @param command Command\n * @param newline Add new line for this command\n */\n pushBinary(command, newline) {\n const clause = command_clause_1.CommandClause.binary(command);\n return this.pushClause(clause, newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE);\n }\n /**\n * Push clause\n * @param clause Command clause object\n * @param newline Add new line for this command\n */\n pushClause(clause, newline) {\n this.clauses.push(clause);\n if (newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE) {\n this.clauses.push(command_clause_1.CommandClause.newline());\n }\n return this;\n }\n /**\n * Push multiple clause\n * @param clauses\n */\n pushClauses(clauses) {\n clauses.forEach(item => this.pushClause(item, false));\n return this;\n }\n /**\n * Push arg\n * @param arg arg\n */\n pushArg(arg) {\n this.pushClauses(arg.clauses());\n return this;\n }\n /**\n * Add newline\n */\n newline() {\n const clause = command_clause_1.CommandClause.newline();\n return this.pushClause(clause, false);\n }\n /**\n * Add a new variable\n * @param name name\n * @param value value\n */\n variable(name, value) {\n this._variable.set(name, value);\n return this;\n }\n /**\n * Clear all commands\n */\n clear() {\n this.clauses.splice(0, this.clauses.length);\n this._variable.clear();\n return this;\n }\n /**\n * Get command\n */\n command() {\n return new command_1.DefaultCommand(this.clauses, this._variable);\n }\n}\nexports.Commander = Commander;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextAppendat = exports.Appendat = void 0;\nconst toolkit_1 = require(\"../../../toolkit\");\nclass Appendat {\n _argument;\n _condition;\n _callback;\n constructor(argument, condition, callback) {\n this._argument = argument;\n this._condition = condition;\n this._callback = callback;\n }\n get condition() {\n return this._condition;\n }\n callback(callback) {\n this._callback = callback;\n return this;\n }\n quote() {\n return this;\n }\n argument() {\n if (!toolkit_1.Checker.truthy(this._callback))\n return this._argument;\n if (!toolkit_1.Checker.truthy(this._argument))\n return undefined;\n return this._callback.callback(this._argument);\n }\n}\nexports.Appendat = Appendat;\nclass TextAppendat extends Appendat {\n _quote;\n constructor(argument, condition, callback) {\n super(argument, condition ?? true, callback);\n this._quote = false;\n }\n /**\n * Create new text appendat\n * @param argument argument\n * @param options options: { condition: condition for this arg, callback: value callback }\n */\n static create(argument, options) {\n return new TextAppendat(argument, options?.condition ?? true, new class {\n callback(data) {\n const cb = options?.callback;\n if (cb) {\n return cb(data);\n }\n return data;\n }\n });\n }\n callback(callback) {\n super.callback(callback);\n return this;\n }\n quote() {\n this._quote = true;\n return this;\n }\n argument() {\n const arg = super.argument();\n if (!toolkit_1.Checker.truthy(arg))\n return this._quote ? '\"\"' : '';\n if (this._quote) {\n return `\"${arg}\"`;\n }\n return arg;\n }\n}\nexports.TextAppendat = TextAppendat;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryCommand = void 0;\nconst command_clause_1 = require(\"../print/command_clause\");\n// import * as iconv from 'iconv-lite';\nconst toolkit_1 = require(\"../../../toolkit\");\nclass BinaryCommand {\n binary;\n constructor(binary) {\n this.binary = binary ?? [];\n }\n static make() {\n return new BinaryCommand();\n }\n static with(u8a) {\n const b = Array.from(u8a);\n return new BinaryCommand(b);\n }\n appendNumber(num) {\n this.binary.push(num);\n return this;\n }\n appendText(text, charset) {\n // const encoding = (charset ?? PsdkConst.DEF_CHARSET).toLowerCase();\n // const binary = iconv.encode(text, encoding);\n const binary = toolkit_1.FastGBK.encode(text);\n this.binary.push(...binary);\n return this;\n }\n appendU8A(u8a) {\n const b = Array.from(u8a);\n this.binary = this.binary.concat(b);\n return this;\n }\n output() {\n return new Uint8Array(this.binary);\n }\n clause() {\n const output = this.output();\n return command_clause_1.CommandClause.binary(output);\n }\n}\nexports.BinaryCommand = BinaryCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSPLCommand = exports.CPCLCommand = exports.SingleCommand = void 0;\n/**\n * Single Command\n */\nconst appendat_1 = require(\"./appendat\");\nconst command_clause_1 = require(\"../print/command_clause\");\nconst toolkit_1 = require(\"../../../toolkit/\");\nclass SingleCommand {\n /**\n * arguments\n * @private\n */\n _arguments;\n _symbolAfterHeader;\n _symbolBetweenArguments;\n _header;\n _charset;\n constructor(symbolAfterHeader, symbolBetweenArguments, charset) {\n this._arguments = [];\n this._symbolAfterHeader = symbolAfterHeader;\n this._symbolBetweenArguments = symbolBetweenArguments;\n this._charset = charset;\n }\n get getHeader() {\n return this._header;\n }\n get symbolAfterHeader() {\n return this._symbolAfterHeader;\n }\n get symbolBetweenArguments() {\n return this._symbolBetweenArguments;\n }\n header(header) {\n this._header = header;\n return this;\n }\n get charset() {\n return this._charset;\n }\n append(appendat) {\n if (!appendat.condition)\n return this;\n const argument = appendat.argument();\n if (!toolkit_1.Checker.truthy(argument))\n return this;\n this._arguments.push(argument);\n return this;\n }\n arguments() {\n return this._arguments;\n }\n}\nexports.SingleCommand = SingleCommand;\nclass BasicStringSingleCommand extends SingleCommand {\n constructor(symbolAfterHeader, symbolBetweenArguments, charset) {\n super(symbolAfterHeader, symbolBetweenArguments, charset);\n }\n append(appendat) {\n const argument = appendat.argument();\n if (!toolkit_1.Checker.truthy(argument))\n return this;\n super.append(appendat);\n return this;\n }\n appendText(text) {\n return this.append(appendat_1.TextAppendat.create(text ?? '', {}));\n }\n appendNumber(num) {\n if (isNaN(num))\n return this;\n return this.append(appendat_1.TextAppendat.create((num ?? '').toString(), {}));\n }\n output() {\n let ret = '';\n if (toolkit_1.Checker.truthy(super.getHeader)) {\n ret += super.getHeader;\n ret += super.symbolAfterHeader;\n }\n const args = super.arguments();\n const len = args.length;\n let seq = 0;\n for (const arg of args) {\n seq += 1;\n if (!toolkit_1.Checker.truthy(arg))\n continue;\n ret += arg;\n if (seq < len) {\n ret += super.symbolBetweenArguments;\n }\n }\n return ret;\n }\n clause() {\n const output = this.output();\n if (!toolkit_1.Checker.truthy(output)) {\n return command_clause_1.CommandClause.none();\n }\n return command_clause_1.CommandClause.text(output, super.charset);\n }\n}\nclass CPCLCommand extends BasicStringSingleCommand {\n constructor(header, charset) {\n super(' ', ' ', charset);\n super.header(header);\n }\n static with(header, charset) {\n return new CPCLCommand(header, charset);\n }\n append(appendat) {\n super.append(appendat);\n return this;\n }\n appendText(text) {\n super.appendText(text);\n return this;\n }\n appendNumber(num) {\n super.appendNumber(num);\n return this;\n }\n}\nexports.CPCLCommand = CPCLCommand;\nclass TSPLCommand extends BasicStringSingleCommand {\n constructor(header, charset) {\n super(' ', ',', charset);\n super.header(header);\n }\n static with(header, charset) {\n return new TSPLCommand(header, charset);\n }\n append(appendat) {\n super.append(appendat);\n return this;\n }\n appendText(text) {\n super.appendText(text);\n return this;\n }\n appendNumber(num) {\n super.appendNumber(num);\n return this;\n }\n}\nexports.TSPLCommand = TSPLCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataWriteOperation = void 0;\n/**\n * Data write operation\n */\nconst types_1 = require(\"../types\");\nconst adapter_1 = require(\"../../device/adapter\");\nconst toolkit_1 = require(\"../../toolkit\");\nclass DataWriteOperation {\n options;\n binary;\n connectedDevice;\n constructor(\n /**\n * Write options\n * @private\n */\n options, \n /**\n * Write binary\n * @private\n */\n binary, \n /**\n * Connected device\n * @private\n */\n connectedDevice) {\n this.options = options;\n this.binary = binary;\n this.connectedDevice = connectedDevice;\n }\n async write() {\n if (!this.options.enableChunkWrite) {\n const reporter = await this.writData(this.binary);\n this.doCallback(reporter, this.binary, 1, 1);\n return reporter;\n }\n const writeData = Array.from(this.binary);\n const parts = toolkit_1.CollectionKit.split(writeData, this.options.chunkSize);\n const totalTimes = parts.length;\n let currentTimes = 0;\n for (const part of parts) {\n currentTimes += 1;\n const partBinary = new Uint8Array(part);\n const reporter = await this.writData(partBinary);\n const control = this.doCallback(reporter, partBinary, currentTimes, totalTimes);\n if (control == types_1.WriteControl.STOP) {\n reporter.controlExit = true;\n return reporter;\n }\n if (!reporter.ok) {\n return reporter;\n }\n }\n return new adapter_1.WroteReporter(true, this.binary, false);\n }\n doCallback(reporter, binary, currentTimes, totalTimes) {\n const callback = this.options.callback;\n if (!callback)\n return types_1.WriteControl.CONTINUE;\n const dataWrote = new types_1.DataWrote(binary, currentTimes, totalTimes);\n if (reporter.ok) {\n return callback.success(dataWrote);\n }\n if (callback.failed) {\n callback.failed(dataWrote, reporter.exception);\n }\n else {\n console.log('no custom failed callback, full exception: ', reporter.exception);\n }\n return types_1.WriteControl.STOP;\n }\n async writData(binary) {\n try {\n await this.connectedDevice.write(binary);\n return new adapter_1.WroteReporter(true, binary, false);\n }\n catch (e) {\n return new adapter_1.WroteReporter(false, binary, false, e);\n }\n }\n}\nexports.DataWriteOperation = DataWriteOperation;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./args\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./command\"), exports);\n__exportStar(require(\"./PSDK\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HexOutput = void 0;\nconst DEF_MAX_LENGTH_OF_LINE = 32;\n/**\n * hex output\n */\nclass HexOutput {\n enableFormat;\n spacing;\n maxLengthOfLine;\n // private format: boolean;\n //\n // private spacing: boolean;\n //\n // private maxLengthOfLine: number = DEF_MAX_LENGTH_OF_LINE;\n constructor(\n /**\n * Is format\n */\n enableFormat, \n /**\n * Enable spacing between byte\n */\n spacing, \n /**\n * Max length of line\n */\n maxLengthOfLine = DEF_MAX_LENGTH_OF_LINE) {\n this.enableFormat = enableFormat;\n this.spacing = spacing;\n this.maxLengthOfLine = maxLengthOfLine;\n }\n static def() {\n return new HexOutput(false, false, DEF_MAX_LENGTH_OF_LINE);\n }\n static simple(format = true) {\n return new HexOutput(format, true, DEF_MAX_LENGTH_OF_LINE);\n }\n static formatWithMaxLength(maxLengthOfLine) {\n return new HexOutput(true, true, maxLengthOfLine);\n }\n /**\n * Format binary\n */\n format(binary) {\n // const hex = toHex(binary);\n const hex = Array.from(binary, function (byte) {\n return ('0' + (byte & 0xFF).toString(16)).slice(-2);\n }).join('');\n if (!this.enableFormat) {\n return hex;\n }\n let fmted = '';\n const textLength = hex.length;\n let lineIndex = 0;\n for (let ix = 0; ix < textLength; ix++) {\n const seq = ix + 1;\n const v = hex[ix];\n fmted += v;\n if (seq % 2 == 0 && this.spacing) {\n if (seq < textLength) {\n if (lineIndex + 1 < this.maxLengthOfLine) {\n fmted += ' ';\n }\n lineIndex += 1;\n }\n }\n if (lineIndex >= this.maxLengthOfLine) {\n fmted += '\\n';\n lineIndex = 0;\n }\n }\n return fmted;\n }\n}\nexports.HexOutput = HexOutput;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./psdk_const\"), exports);\n__exportStar(require(\"./hex_output\"), exports);\n__exportStar(require(\"./write\"), exports);\n__exportStar(require(\"./lifecycle\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lifecycle = void 0;\nclass Lifecycle {\n connectedDevice;\n constructor(\n /**\n * Connected device\n */\n connectedDevice) {\n this.connectedDevice = connectedDevice;\n }\n}\nexports.Lifecycle = Lifecycle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PsdkConst = void 0;\nconst toolkit_1 = require(\"../../toolkit\");\nconst CR = '\\r';\nconst LF = '\\n';\nconst CRLF = `${CR}${LF}`;\n/**\n * constants\n */\nexports.PsdkConst = {\n DEF_CHARSET: 'gbk',\n CR,\n LF,\n CRLF,\n QUOTE: '\"',\n DEF_NEWLINE_BINARY: toolkit_1.ByteKit.textToU8A(CRLF),\n DEF_AUTHORS: ['fewensa <osuni@protonmail.com>'],\n DEF_ENABLED_NEWLINE: true,\n DEF_WRITE_CHUNK_SIZE: 512,\n EMPTY_BYTES: new Uint8Array([]),\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteControl = exports.DataWrote = exports.DataWrite = exports.IDataWriteCallback = exports.WriteOptions = void 0;\nconst psdk_const_1 = require(\"./psdk_const\");\n/**\n * Write to device options\n */\nclass WriteOptions {\n enableChunkWrite;\n chunkSize;\n callback;\n constructor(\n /**\n * Enable data splitting\n */\n enableChunkWrite = true, \n /**\n * Part size\n */\n chunkSize = psdk_const_1.PsdkConst.DEF_WRITE_CHUNK_SIZE, \n /**\n * Data write callback\n */\n callback) {\n this.enableChunkWrite = enableChunkWrite;\n this.chunkSize = chunkSize;\n this.callback = callback;\n }\n static def() {\n return new WriteOptions(true, psdk_const_1.PsdkConst.DEF_WRITE_CHUNK_SIZE, undefined);\n }\n}\nexports.WriteOptions = WriteOptions;\n/**\n * Data write callback\n */\nclass IDataWriteCallback {\n failed(data, exception) {\n console.error(`Write data failed: ${exception.message}`);\n }\n}\nexports.IDataWriteCallback = IDataWriteCallback;\n/**\n * Data write\n */\nclass DataWrite {\n binary;\n currentTimes;\n totalTimes;\n constructor(\n /**\n * Wrote binary\n */\n binary, \n /**\n * Write current times\n */\n currentTimes, \n /**\n * Write total times\n */\n totalTimes) {\n this.binary = binary;\n this.currentTimes = currentTimes;\n this.totalTimes = totalTimes;\n }\n}\nexports.DataWrite = DataWrite;\n/**\n * Data wrote\n */\nclass DataWrote extends DataWrite {\n}\nexports.DataWrote = DataWrote;\n/**\n * Write control\n */\nvar WriteControl;\n(function (WriteControl) {\n WriteControl[\"CONTINUE\"] = \"CONTINUE\";\n WriteControl[\"STOP\"] = \"STOP\";\n})(WriteControl || (exports.WriteControl = WriteControl = {}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./device/adapter\"), exports);\n__exportStar(require(\"./father\"), exports);\n__exportStar(require(\"./toolkit\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = exports.extendBuiltins = exports.extendUint8Array = exports.extendString = exports.toUint8Array = exports.fromUint8Array = exports.isValid = exports.decode = exports.btou = exports.encodeURL = exports.encodeURI = exports.encode = exports.utob = exports.toBase64 = exports.fromBase64 = exports.btoaPolyfill = exports.btoa = exports.atobPolyfill = exports.atob = exports.VERSION = exports.version = void 0;\n// https://github.com/dankogai/js-base64/blob/main/base64.ts\n/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\nexports.version = version;\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nexports.VERSION = VERSION;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\nexports.btoaPolyfill = btoaPolyfill;\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nexports.btoa = _btoa;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\nexports.fromUint8Array = fromUint8Array;\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\nexports.utob = utob;\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\nexports.toBase64 = encode;\nexports.encode = encode;\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\nexports.encodeURI = encodeURI;\nexports.encodeURL = encodeURI;\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\nexports.btou = btou;\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\nexports.atobPolyfill = atobPolyfill;\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\nexports.atob = _atob;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\nexports.toUint8Array = toUint8Array;\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\nexports.fromBase64 = decode;\nexports.decode = decode;\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\nexports.isValid = isValid;\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\nexports.extendString = extendString;\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\nexports.extendUint8Array = extendUint8Array;\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nexports.extendBuiltins = extendBuiltins;\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\nexports.Base64 = gBase64;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ByteKit = void 0;\nconst checker_1 = require(\"./checker\");\n/**\n * Byte kit\n */\nclass ByteKit {\n /**\n * Text to byte\n * @param text text\n */\n static textToU8A(text) {\n if (!checker_1.Checker.truthy(text))\n return new Uint8Array([]);\n let bytes = [];\n let len, c;\n len = text.length;\n for (let i = 0; i < len; i++) {\n c = text.charCodeAt(i);\n if (c >= 0x010000 && c <= 0x10FFFF) {\n bytes.push(((c >> 18) & 0x07) | 0xF0);\n bytes.push(((c >> 12) & 0x3F) | 0x80);\n bytes.push(((c >> 6) & 0x3F) | 0x80);\n bytes.push((c & 0x3F) | 0x80);\n }\n else if (c >= 0x000800 && c <= 0x00FFFF) {\n bytes.push(((c >> 12) & 0x0F) | 0xE0);\n bytes.push(((c >> 6) & 0x3F) | 0x80);\n bytes.push((c & 0x3F) | 0x80);\n }\n else if (c >= 0x000080 && c <= 0x0007FF) {\n bytes.push(((c >> 6) & 0x1F) | 0xC0);\n bytes.push((c & 0x3F) | 0x80);\n }\n else {\n bytes.push(c & 0xFF);\n }\n }\n return new Uint8Array(bytes);\n }\n}\nexports.ByteKit = ByteKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = void 0;\nclass Checker {\n static truthy(value) {\n if (value === undefined)\n return false;\n if (value === null)\n return false;\n if (value === '')\n return false;\n const t = typeof value;\n switch (t) {\n case 'number':\n if (isNaN(value))\n return false;\n break;\n case 'bigint':\n default:\n return true;\n }\n }\n static empty(value) {\n if (!Checker.truthy(value))\n return true;\n return value.length === 0;\n }\n}\nexports.Checker = Checker;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastGBK = void 0;\n// https://github.com/EtherDream/str2gbk/blob/main/index.js\nlet table;\nfunction initGbkTable() {\n // https://en.wikipedia.org/wiki/GBK_(character_encoding)#Encoding\n const ranges = [\n [0xA1, 0xA9, 0xA1, 0xFE],\n [0xB0, 0xF7, 0xA1, 0xFE],\n [0x81, 0xA0, 0x40, 0xFE],\n [0xAA, 0xFE, 0x40, 0xA0],\n [0xA8, 0xA9, 0x40, 0xA0],\n [0xAA, 0xAF, 0xA1, 0xFE],\n [0xF8, 0xFE, 0xA1, 0xFE],\n [0xA1, 0xA7, 0x40, 0xA0],\n ];\n const codes = new Uint16Array(23940);\n let i = 0;\n for (const [b1Begin, b1End, b2Begin, b2End] of ranges) {\n for (let b2 = b2Begin; b2 <= b2End; b2++) {\n if (b2 !== 0x7F) {\n for (let b1 = b1Begin; b1 <= b1End; b1++) {\n codes[i++] = b2 << 8 | b1;\n }\n }\n }\n }\n table = new Uint16Array(65536);\n table.fill(0xFFFF);\n const str = new TextDecoder('gbk').decode(codes);\n for (let i = 0; i < str.length; i++) {\n table[str.charCodeAt(i)] = codes[i];\n }\n}\n// const NodeJsBufAlloc = typeof Buffer === 'function' && Buffer.allocUnsafe\n//\n// const defaultOnAlloc = NodeJsBufAlloc\n// ? (len) => NodeJsBufAlloc(len)\n// : (len) => new Uint8Array(len)\nconst defaultOnAlloc = (len) => new Uint8Array(len);\nconst defaultOnError = () => 63; // '?'\nconst gbkDecoder = new TextDecoder('gbk');\nclass FastGBK {\n static decode(buffer) {\n return gbkDecoder.decode(buffer);\n }\n static encode(text, options) {\n if (!table) {\n initGbkTable();\n }\n const onAlloc = options?.onAlloc ?? defaultOnAlloc;\n const onError = options?.onError ?? defaultOnError;\n const buf = onAlloc(text.length * 2);\n let n = 0;\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code < 0x80) {\n buf[n++] = code;\n continue;\n }\n const gbk = table[code];\n if (gbk !== 0xFFFF) {\n buf[n++] = gbk;\n buf[n++] = gbk >> 8;\n }\n else if (code === 8364) {\n // 8364 == '€'.charCodeAt(0)\n // Code Page 936 has a single-byte euro sign at 0x80\n buf[n++] = 0x80;\n }\n else {\n const ret = onError(i, text);\n if (ret === -1) {\n break;\n }\n if (ret > 0xFF) {\n buf[n++] = ret;\n buf[n++] = ret >> 8;\n }\n else {\n buf[n++] = ret;\n }\n }\n }\n return buf.subarray(0, n);\n }\n}\nexports.FastGBK = FastGBK;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./byte\"), exports);\n__exportStar(require(\"./pvariable\"), exports);\n__exportStar(require(\"./pcollection\"), exports);\n__exportStar(require(\"./pimage\"), exports);\n__exportStar(require(\"./checker\"), exports);\n__exportStar(require(\"./gbk\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CollectionKit = void 0;\nconst checker_1 = require(\"./checker\");\n/**\n * Collection kit\n */\nclass CollectionKit {\n /**\n * Split array\n *\n * @param colls collections\n * @param size The size of result array\n * @return List\n */\n static split(colls, size) {\n if (checker_1.Checker.empty(colls))\n return [];\n if (size <= 0)\n throw new Error('The size must > 0');\n const rets = [];\n let items = [];\n for (const coll of colls) {\n items.push(coll);\n if (size == items.length) {\n rets.push(items);\n items = [];\n }\n }\n if (0 != items.length)\n rets.push(items);\n return rets;\n }\n /**\n * Part array\n *\n * @param colls collections\n * @param parts Part length\n * @return List\n */\n static parts(colls, parts) {\n if (checker_1.Checker.empty(colls)) {\n return [];\n }\n if (parts <= 0)\n throw new Error('The parts length must > 0');\n if (colls.length <= parts) {\n return [colls];\n }\n const rets = [];\n let items = [];\n const pnum = Math.floor(colls.length / parts);\n for (const coll of colls) {\n items.push(coll);\n if (items.length == pnum) {\n rets.push(items);\n if (rets.length < parts)\n items = [];\n }\n }\n return rets;\n }\n}\nexports.CollectionKit = CollectionKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageKit = void 0;\n/**\n * Image kit\n */\nclass ImageKit {\n /**\n * process image\n * @param canvas canvas\n * @param width width\n * @param height height\n */\n static processImage(canvas, width, height) {\n const ctx = canvas.getContext('2d');\n let eWidth = Math.floor((width % 8 === 0) ? (width / 8) : (width / 8 + 1));\n let currentHeight = 0;\n let index = 0;\n const area = height * eWidth;\n const bytes = []; // the bytes length is equals `area`\n for (let b1 = 0; b1 < area; b1++) {\n bytes[b1] = 0;\n }\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n while (currentHeight < height) {\n // let rowData = []; // the row data length is image height\n let eightBitIndex = 0;\n for (let x = 0; x < width; x++) {\n eightBitIndex++;\n if (eightBitIndex > 8) {\n eightBitIndex = 1;\n index++;\n }\n const n = 1 << 8 - eightBitIndex;\n // const pixel = ctx.getImageData(x, currentHeight, 1, 1);\n const pixels = ImageKit.fastExtractPixel(imgData, x, currentHeight, 1, 1);\n const pixel = pixels[0];\n // const rgba = pixel.data;\n const red = pixel[0];\n const green = pixel[1];\n const blue = pixel[2];\n if ((red + green + blue) / 3 < 128) {\n bytes[index] = (bytes[index] | n);\n }\n }\n index = eWidth * (currentHeight + 1);\n currentHeight += 1;\n }\n return new Uint8Array(bytes);\n }\n static fastExtractPixel(imageData, x, y, w, h) {\n let i, j;\n let result = [];\n let r, g, b, a;\n const data = imageData.data;\n for (j = 0; j < h; j++) {\n let idx = (x + (y + j) * imageData.width) * 4; // get left most byte index for row at y + j\n for (i = 0; i < w; i++) {\n r = data[idx++];\n g = data[idx++];\n b = data[idx++];\n a = data[idx++];\n // do the processing\n result.push([r, g, b, a]);\n }\n }\n return result;\n }\n}\nexports.ImageKit = ImageKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PVariableKit = void 0;\nconst checker_1 = require(\"./checker\");\nclass PVariableKit {\n /**\n * Replace variable\n * @param text text\n * @param variable variable\n */\n static replace(text, variable) {\n if (!checker_1.Checker.truthy(text))\n return text;\n if (!checker_1.Checker.truthy(variable))\n return text;\n if (text.indexOf('{{') < 0 && text.indexOf('}}') < 0)\n return text;\n const regx = /[\\\\]?\\{\\{(?<varx>.*?)}}/gm;\n const tmpMark = '__THIS_IS_MAGIC_MARK_FOR_HACK_REGEX_MATCH__';\n while (true) {\n const match = regx.exec(text);\n if (match == null)\n break;\n const originDefined = match[0];\n const originVarx = originDefined.replace('{{', '')\n .replace('}}', '');\n const varName = originVarx.trim();\n const varValue = variable.get(varName) ?? '';\n if (originDefined.startsWith('\\\\')) {\n const tmpDefined = originDefined.replace('\\\\{{', tmpMark);\n text = text.replace(originDefined, tmpDefined);\n continue;\n }\n text = text.replace(originDefined, varValue);\n }\n text = text.replace(new RegExp(tmpMark, 'g'), '{{');\n return text;\n }\n}\nexports.PVariableKit = PVariableKit;\n","'use strict';\n\nvar runtime = require('@tarojs/runtime');\nvar shared = require('@tarojs/shared');\n\nconst ENV_TYPE = {\n WEAPP: 'WEAPP',\n SWAN: 'SWAN',\n ALIPAY: 'ALIPAY',\n TT: 'TT',\n QQ: 'QQ',\n JD: 'JD',\n WEB: 'WEB',\n RN: 'RN',\n HARMONY: 'HARMONY',\n QUICKAPP: 'QUICKAPP',\n HARMONYHYBRID: 'HARMONYHYBRID',\n};\nfunction getEnv() {\n if (process.env.TARO_ENV === 'weapp') {\n return ENV_TYPE.WEAPP;\n }\n else if (process.env.TARO_ENV === 'alipay') {\n return ENV_TYPE.ALIPAY;\n }\n else if (process.env.TARO_ENV === 'swan') {\n return ENV_TYPE.SWAN;\n }\n else if (process.env.TARO_ENV === 'tt') {\n return ENV_TYPE.TT;\n }\n else if (process.env.TARO_ENV === 'jd') {\n return ENV_TYPE.JD;\n }\n else if (process.env.TARO_ENV === 'qq') {\n return ENV_TYPE.QQ;\n }\n else if (process.env.TARO_ENV === 'harmony-hybrid') {\n return ENV_TYPE.HARMONYHYBRID;\n }\n else if (process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web') {\n return ENV_TYPE.WEB;\n }\n else if (process.env.TARO_ENV === 'rn') {\n return ENV_TYPE.RN;\n }\n else if (process.env.TARO_ENV === 'harmony' || process.env.TARO_PLATFORM === 'harmony') {\n return ENV_TYPE.HARMONY;\n }\n else if (process.env.TARO_ENV === 'quickapp') {\n return ENV_TYPE.QUICKAPP;\n }\n else {\n return process.env.TARO_ENV || 'Unknown';\n }\n}\n\nclass Chain {\n constructor(requestParams, interceptors, index) {\n this.index = index || 0;\n this.requestParams = requestParams || {};\n this.interceptors = interceptors || [];\n }\n proceed(requestParams = {}) {\n this.requestParams = requestParams;\n if (this.index >= this.interceptors.length) {\n throw new Error('chain 参数错误, 请勿直接修改 request.chain');\n }\n const nextInterceptor = this._getNextInterceptor();\n const nextChain = this._getNextChain();\n const p = nextInterceptor(nextChain);\n const res = p.catch(err => Promise.reject(err));\n Object.keys(p).forEach(k => shared.isFunction(p[k]) && (res[k] = p[k]));\n return res;\n }\n _getNextInterceptor() {\n return this.interceptors[this.index];\n }\n _getNextChain() {\n return new Chain(this.requestParams, this.interceptors, this.index + 1);\n }\n}\n\nclass Link {\n constructor(interceptor) {\n this.taroInterceptor = interceptor;\n this.chain = new Chain();\n }\n request(requestParams) {\n const chain = this.chain;\n const taroInterceptor = this.taroInterceptor;\n chain.interceptors = chain.interceptors\n .filter(interceptor => interceptor !== taroInterceptor)\n .concat(taroInterceptor);\n return chain.proceed(Object.assign({}, requestParams));\n }\n addInterceptor(interceptor) {\n this.chain.interceptors.push(interceptor);\n }\n cleanInterceptors() {\n this.chain = new Chain();\n }\n}\nfunction interceptorify(promiseifyApi) {\n return new Link(function (chain) {\n return promiseifyApi(chain.requestParams);\n });\n}\n\nfunction timeoutInterceptor(chain) {\n const requestParams = chain.requestParams;\n let p;\n const res = new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n clearTimeout(timeout);\n reject(new Error('网络链接超时,请稍后再试!'));\n }, (requestParams && requestParams.timeout) || 60000);\n p = chain.proceed(requestParams);\n p\n .then(res => {\n if (!timeout)\n return;\n clearTimeout(timeout);\n resolve(res);\n })\n .catch(err => {\n timeout && clearTimeout(timeout);\n reject(err);\n });\n });\n // @ts-ignore\n if (!shared.isUndefined(p) && shared.isFunction(p.abort))\n res.abort = p.abort;\n return res;\n}\nfunction logInterceptor(chain) {\n const requestParams = chain.requestParams;\n const { method, data, url } = requestParams;\n // eslint-disable-next-line no-console\n console.log(`http ${method || 'GET'} --> ${url} data: `, data);\n const p = chain.proceed(requestParams);\n const res = p\n .then(res => {\n // eslint-disable-next-line no-console\n console.log(`http <-- ${url} result:`, res);\n return res;\n });\n // @ts-ignore\n if (shared.isFunction(p.abort))\n res.abort = p.abort;\n return res;\n}\n\nvar interceptors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n logInterceptor: logInterceptor,\n timeoutInterceptor: timeoutInterceptor\n});\n\nfunction Behavior(options) {\n return options;\n}\nfunction getPreload(current) {\n return function (key, val) {\n current.preloadData = shared.isObject(key)\n ? key\n : {\n [key]: val\n };\n };\n}\nconst defaultDesignWidth = 750;\nconst defaultDesignRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2\n};\nconst defaultBaseFontSize = 20;\nconst defaultUnitPrecision = 5;\nconst defaultTargetUnit = 'rpx';\nfunction getInitPxTransform(taro) {\n return function (config) {\n const { designWidth = defaultDesignWidth, deviceRatio = defaultDesignRatio, baseFontSize = defaultBaseFontSize, targetUnit = defaultTargetUnit, unitPrecision = defaultUnitPrecision, } = config;\n taro.config = taro.config || {};\n taro.config.designWidth = designWidth;\n taro.config.deviceRatio = deviceRatio;\n taro.config.baseFontSize = baseFontSize;\n taro.config.targetUnit = targetUnit;\n taro.config.unitPrecision = unitPrecision;\n };\n}\nfunction getPxTransform(taro) {\n return function (size) {\n const config = taro.config || {};\n const baseFontSize = config.baseFontSize;\n const deviceRatio = config.deviceRatio || defaultDesignRatio;\n const designWidth = ((input = 0) => shared.isFunction(config.designWidth)\n ? config.designWidth(input)\n : config.designWidth || defaultDesignWidth)(size);\n if (!(designWidth in deviceRatio)) {\n throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`);\n }\n const targetUnit = config.targetUnit || defaultTargetUnit;\n const unitPrecision = config.unitPrecision || defaultUnitPrecision;\n const formatSize = ~~size;\n let rootValue = 1 / deviceRatio[designWidth];\n switch (targetUnit) {\n case 'rem':\n rootValue *= baseFontSize * 2;\n break;\n case 'px':\n rootValue *= 2;\n break;\n }\n let val = formatSize / rootValue;\n if (unitPrecision >= 0 && unitPrecision <= 100) {\n val = Number(val.toFixed(unitPrecision));\n }\n return val + targetUnit;\n };\n}\n\n/* eslint-disable camelcase */\nconst Taro = {\n Behavior,\n getEnv,\n ENV_TYPE,\n Link,\n interceptors,\n Current: runtime.Current,\n getCurrentInstance: runtime.getCurrentInstance,\n options: runtime.options,\n nextTick: runtime.nextTick,\n eventCenter: runtime.eventCenter,\n Events: runtime.Events,\n getInitPxTransform,\n interceptorify\n};\nTaro.initPxTransform = getInitPxTransform(Taro);\nTaro.preload = getPreload(runtime.Current);\nTaro.pxTransform = getPxTransform(Taro);\n\nmodule.exports = Taro;\n","import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\nexport default tslib;\r\n","import { noop, isFunction, getComponentsAlias as getComponentsAlias$1, internalComponents, EMPTY_OBJ, hooks, toCamelCase, isObject, warn, isArray, ensure, isNull, isUndefined, toDashed, isString, controlledComponent, Events, isNumber, EventChannel } from '@tarojs/shared';\nexport { Events, hooks } from '@tarojs/shared';\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';\n\nconst PROPERTY_THRESHOLD = 2046;\nconst TARO_RUNTIME = 'Taro runtime';\nconst HOOKS_APP_ID = 'taro-app';\nconst SET_DATA = '小程序 setData';\nconst PAGE_INIT = '页面初始化';\nconst ROOT_STR = 'root';\nconst HTML = 'html';\nconst HEAD = 'head';\nconst BODY = 'body';\nconst APP = 'app';\nconst CONTAINER = 'container';\nconst DOCUMENT_ELEMENT_NAME = '#document';\nconst DOCUMENT_FRAGMENT = 'document-fragment';\nconst ID = 'id';\nconst UID = 'uid';\nconst CLASS = 'class';\nconst STYLE = 'style';\nconst FOCUS = 'focus';\nconst VIEW = 'view';\nconst STATIC_VIEW = 'static-view';\nconst PURE_VIEW = 'pure-view';\nconst PROPS = 'props';\nconst DATASET = 'dataset';\nconst OBJECT = 'object';\nconst VALUE = 'value';\nconst INPUT = 'input';\nconst CHANGE = 'change';\nconst CUSTOM_WRAPPER = 'custom-wrapper';\nconst TARGET = 'target';\nconst CURRENT_TARGET = 'currentTarget';\nconst TYPE = 'type';\nconst CONFIRM = 'confirm';\nconst TIME_STAMP = 'timeStamp';\nconst KEY_CODE = 'keyCode';\nconst TOUCHMOVE = 'touchmove';\nconst DATE = 'Date';\nconst SET_TIMEOUT = 'setTimeout';\nconst COMPILE_MODE = 'compileMode';\nconst CATCHMOVE = 'catchMove';\nconst CATCH_VIEW = 'catch-view';\nconst COMMENT = 'comment';\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\nconst OPTIONS = 'options';\nconst EXTERNAL_CLASSES = 'externalClasses';\nconst EVENT_CALLBACK_RESULT = 'e_result';\nconst BEHAVIORS = 'behaviors';\nconst A = 'a';\n/**\n * 页面上下文切换时的行为\n */\nvar CONTEXT_ACTIONS;\n(function (CONTEXT_ACTIONS) {\n CONTEXT_ACTIONS[\"INIT\"] = \"0\";\n CONTEXT_ACTIONS[\"RESTORE\"] = \"1\";\n CONTEXT_ACTIONS[\"RECOVER\"] = \"2\";\n CONTEXT_ACTIONS[\"DESTORY\"] = \"3\";\n})(CONTEXT_ACTIONS || (CONTEXT_ACTIONS = {}));\n\nconst observers = [];\n/**\n * The MutationObserver provides the ability\n * to watch for changes being made to the DOM tree.\n * It will invoke a specified callback function\n * when DOM changes occur.\n * @see https://dom.spec.whatwg.org/#mutationobserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nclass MutationObserverImpl {\n constructor(callback) {\n this.records = [];\n this.callback = callback;\n }\n /**\n * Configures the MutationObserver\n * to begin receiving notifications\n * through its callback function\n * when DOM changes matching the given options occur.\n *\n * Options matching is to be implemented.\n */\n observe(target, options) {\n this.disconnect();\n this.target = target;\n this.options = options || {};\n observers.push(this);\n }\n /**\n * Stop the MutationObserver instance\n * from receiving further notifications\n * until and unless observe() is called again.\n */\n disconnect() {\n this.target = null;\n const index = observers.indexOf(this);\n if (index >= 0) {\n observers.splice(index, 1);\n }\n }\n /**\n * Removes all pending notifications\n * from the MutationObserver's notification queue\n * and returns them in a new Array of MutationRecord objects.\n */\n takeRecords() {\n return this.records.splice(0, this.records.length);\n }\n}\n/** Match two TaroNodes by sid. */\nconst sidMatches = (observerTarget, target) => {\n return !!observerTarget && observerTarget.sid === (target === null || target === void 0 ? void 0 : target.sid);\n};\nconst isConcerned = (record, options) => {\n const { characterData, characterDataOldValue, attributes, attributeOldValue, childList } = options;\n switch (record.type) {\n case \"characterData\" /* MutationRecordType.CHARACTER_DATA */:\n if (characterData) {\n if (!characterDataOldValue)\n record.oldValue = null;\n return true;\n }\n return false;\n case \"attributes\" /* MutationRecordType.ATTRIBUTES */:\n if (attributes) {\n if (!attributeOldValue)\n record.oldValue = null;\n return true;\n }\n return false;\n case \"childList\" /* MutationRecordType.CHILD_LIST */:\n if (childList) {\n return true;\n }\n return false;\n }\n};\nlet pendingMuatations = false;\nfunction logMutation(observer, record) {\n observer.records.push(record);\n if (!pendingMuatations) {\n pendingMuatations = true;\n Promise\n .resolve()\n .then(() => {\n pendingMuatations = false;\n observers.forEach(observer => {\n return observer.callback(observer.takeRecords());\n });\n });\n }\n}\nfunction recordMutation(record) {\n observers.forEach(observer => {\n const { options } = observer;\n for (let t = record.target; t; t = t.parentNode) {\n if (sidMatches(observer.target, t) && isConcerned(record, options)) {\n logMutation(observer, record);\n break;\n }\n if (!options.subtree)\n break;\n }\n });\n}\n\nlet MutationObserver$1 = class MutationObserver {\n constructor(callback) {\n if (ENABLE_MUTATION_OBSERVER) {\n this.core = new MutationObserverImpl(callback);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Taro Warning] 若要使用 MutationObserver,请在 Taro 编译配置中设置 \\'mini.runtime.enableMutationObserver: true\\'');\n }\n this.core = {\n observe: noop,\n disconnect: noop,\n takeRecords: noop\n };\n }\n }\n observe(...args) {\n this.core.observe(...args);\n }\n disconnect() {\n this.core.disconnect();\n }\n takeRecords() {\n return this.core.takeRecords();\n }\n static record(record) {\n recordMutation(record);\n }\n};\n\nfunction throttle(fn, threshold = 250, scope) {\n let lastTime = 0;\n let deferTimer;\n return function (...args) {\n const context = scope || this;\n const now = Date.now();\n if (now - lastTime > threshold) {\n fn.apply(this, args);\n lastTime = now;\n }\n else {\n clearTimeout(deferTimer);\n deferTimer = setTimeout(() => {\n lastTime = now;\n fn.apply(context, args);\n }, threshold);\n }\n };\n}\n\nconst incrementId = () => {\n const chatCodes = [];\n // A-Z\n for (let i = 65; i <= 90; i++) {\n chatCodes.push(i);\n }\n // a-z\n for (let i = 97; i <= 122; i++) {\n chatCodes.push(i);\n }\n const chatCodesLen = chatCodes.length - 1;\n const list = [0, 0];\n return () => {\n const target = list.map(item => chatCodes[item]);\n const res = String.fromCharCode(...target);\n let tailIdx = list.length - 1;\n list[tailIdx]++;\n while (list[tailIdx] > chatCodesLen) {\n list[tailIdx] = 0;\n tailIdx = tailIdx - 1;\n if (tailIdx < 0) {\n list.push(0);\n break;\n }\n list[tailIdx]++;\n }\n return res;\n };\n};\nfunction isElement(node) {\n return node.nodeType === 1 /* NodeType.ELEMENT_NODE */;\n}\nfunction isText(node) {\n return node.nodeType === 3 /* NodeType.TEXT_NODE */;\n}\nfunction isComment(node) {\n return node.nodeName === COMMENT;\n}\nfunction isHasExtractProp(el) {\n const res = Object.keys(el.props).find(prop => {\n return !(/^(class|style|id)$/.test(prop) || prop.startsWith('data-'));\n });\n return Boolean(res);\n}\n/**\n * 往上寻找组件树直到 root,寻找是否有祖先组件绑定了同类型的事件\n * @param node 当前组件\n * @param type 事件类型\n */\nfunction isParentBinded(node, type) {\n var _a;\n while ((node = (node === null || node === void 0 ? void 0 : node.parentElement) || null)) {\n if (!node || node.nodeName === ROOT_STR || node.nodeName === 'root-portal') {\n return false;\n }\n else if ((_a = node.__handlers[type]) === null || _a === void 0 ? void 0 : _a.length) {\n return true;\n }\n }\n return false;\n}\nfunction shortcutAttr(key) {\n switch (key) {\n case STYLE:\n return \"st\" /* Shortcuts.Style */;\n case ID:\n return UID;\n case CLASS:\n return \"cl\" /* Shortcuts.Class */;\n default:\n return key;\n }\n}\nconst customWrapperCache = new Map();\nfunction extend(ctor, methodName, options) {\n if (isFunction(options)) {\n options = {\n value: options\n };\n }\n Object.defineProperty(ctor.prototype, methodName, Object.assign({ configurable: true, enumerable: true }, options));\n}\nlet componentsAlias$1;\nfunction getComponentsAlias() {\n if (!componentsAlias$1) {\n componentsAlias$1 = getComponentsAlias$1(internalComponents);\n }\n return componentsAlias$1;\n}\n\nclass ClassList {\n constructor(className, el) {\n this.tokenList = [];\n this.el = el;\n className.trim().split(/\\s+/).forEach(token => this.tokenList.push(token));\n }\n get value() {\n return this.toString();\n }\n get length() {\n return this.tokenList.length;\n }\n add() {\n let index = 0;\n let updated = false;\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n do {\n const token = tokens[index];\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token);\n updated = true;\n }\n } while (++index < length);\n if (updated) {\n this._update();\n }\n }\n remove() {\n let i = 0;\n let updated = false;\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n do {\n const token = tokens[i] + '';\n if (!this.checkTokenIsValid(token))\n continue;\n const index = tokenList.indexOf(token);\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1);\n updated = true;\n }\n } while (++i < length);\n if (updated) {\n this._update();\n }\n }\n contains(token) {\n if (!this.checkTokenIsValid(token))\n return false;\n return !!~this.tokenList.indexOf(token);\n }\n toggle(token, force) {\n const result = this.contains(token);\n const method = result ? force !== true && 'remove' : force !== false && 'add';\n if (method) {\n // @ts-ignore\n this[method](token);\n }\n if (force === true || force === false) {\n return force;\n }\n else {\n return !result;\n }\n }\n replace(token, replacement_token) {\n if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token))\n return;\n const index = this.tokenList.indexOf(token);\n if (~index) {\n this.tokenList.splice(index, 1, replacement_token);\n this._update();\n }\n }\n toString() {\n return this.tokenList.filter(v => v !== '').join(' ');\n }\n checkTokenIsValid(token) {\n if (token === '' || /\\s/.test(token))\n return false;\n return true;\n }\n _update() {\n this.el.className = this.value;\n }\n}\n\nclass EventSource extends Map {\n removeNode(child) {\n const { sid, uid } = child;\n this.delete(sid);\n if (uid !== sid && uid)\n this.delete(uid);\n }\n removeNodeTree(child) {\n this.removeNode(child);\n const { childNodes } = child;\n childNodes.forEach(node => this.removeNodeTree(node));\n }\n}\nconst eventSource = new EventSource();\n\nconst env = {\n window: process.env.TARO_PLATFORM === 'web' ? window : EMPTY_OBJ,\n document: process.env.TARO_PLATFORM === 'web' ? document : EMPTY_OBJ\n};\n\nlet SPECIAL_NODES;\nlet componentsAlias;\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nfunction hydrate(node) {\n var _a;\n // 初始化 componentsAlias\n componentsAlias || (componentsAlias = getComponentsAlias());\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES || (SPECIAL_NODES = hooks.call('getSpecialNodes'));\n const nodeName = node.nodeName;\n let compileModeName = null;\n if (isText(node)) {\n return {\n sid: node.sid,\n [\"v\" /* Shortcuts.Text */]: node.nodeValue,\n [\"nn\" /* Shortcuts.NodeName */]: ((_a = componentsAlias[nodeName]) === null || _a === void 0 ? void 0 : _a._num) || '8'\n };\n }\n const data = {\n [\"nn\" /* Shortcuts.NodeName */]: nodeName,\n sid: node.sid\n };\n if (node.uid !== node.sid) {\n data.uid = node.uid;\n }\n if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n data[\"nn\" /* Shortcuts.NodeName */] = `static-${nodeName}`;\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[\"nn\" /* Shortcuts.NodeName */] = PURE_VIEW;\n }\n }\n const { props } = node;\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop);\n if (!prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE) {\n data[propInCamelCase] = props[prop];\n }\n if (process.env.TARO_ENV !== 'swan' &&\n nodeName === VIEW &&\n propInCamelCase === CATCHMOVE &&\n props[prop] !== false) {\n data[\"nn\" /* Shortcuts.NodeName */] = CATCH_VIEW;\n }\n if (propInCamelCase === COMPILE_MODE) {\n compileModeName = props[prop];\n }\n }\n // Children\n data[\"cn\" /* Shortcuts.Childnodes */] = node.childNodes.filter(node => !isComment(node)).map(hydrate);\n if (node.className !== '') {\n data[\"cl\" /* Shortcuts.Class */] = node.className;\n }\n const cssText = node.cssText;\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[\"st\" /* Shortcuts.Style */] = cssText;\n }\n hooks.call('modifyHydrateData', data, node);\n const nn = data[\"nn\" /* Shortcuts.NodeName */];\n const componentAlias = componentsAlias[nn];\n if (componentAlias) {\n data[\"nn\" /* Shortcuts.NodeName */] = componentAlias._num;\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop];\n delete data[prop];\n }\n }\n }\n if (compileModeName !== null) {\n data[\"nn\" /* Shortcuts.NodeName */] = compileModeName;\n }\n const resData = hooks.call('transferHydrateData', data, node, componentAlias);\n return resData || data;\n}\n\nclass TaroEventTarget {\n constructor() {\n this.__handlers = {};\n }\n addEventListener(type, handler, options) {\n type = type.toLowerCase();\n hooks.call('onAddEvent', type, handler, options, this);\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.addEventListener('begin', handler, options);\n this.addEventListener('end', handler, options);\n return;\n }\n let isCapture = Boolean(options);\n let isOnce = false;\n if (isObject(options)) {\n isCapture = Boolean(options.capture);\n isOnce = Boolean(options.once);\n }\n if (isOnce) {\n const wrapper = function () {\n handler.apply(this, arguments); // this 指向 Element\n this.removeEventListener(type, wrapper);\n };\n this.addEventListener(type, wrapper, Object.assign(Object.assign({}, options), { once: false }));\n return;\n }\n process.env.NODE_ENV !== 'production' && warn(isCapture, 'Taro 暂未实现 event 的 capture 特性。');\n // 某些框架,如 PReact 有委托的机制,handler 始终是同一个函数\n // 这会导致多层停止冒泡失败:view -> view(handler.stop = false) -> view(handler.stop = true)\n // 这样解决:view -> view(handlerA.stop = false) -> view(handlerB.stop = false)\n // 因此每次绑定事件都新建一个函数,如果带来了性能问题,可以把这段逻辑抽取到 PReact 插件中。\n const oldHandler = handler;\n handler = function () {\n return oldHandler.apply(this, arguments); // this 指向 Element\n };\n handler.oldHandler = oldHandler;\n const handlers = this.__handlers[type];\n if (isArray(handlers)) {\n handlers.push(handler);\n }\n else {\n this.__handlers[type] = [handler];\n }\n }\n removeEventListener(type, handler) {\n type = type.toLowerCase();\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.removeEventListener('begin', handler);\n this.removeEventListener('end', handler);\n return;\n }\n if (!handler) {\n return;\n }\n const handlers = this.__handlers[type];\n if (!isArray(handlers)) {\n return;\n }\n const index = handlers.findIndex(item => {\n if (item === handler || item.oldHandler === handler)\n return true;\n });\n process.env.NODE_ENV !== 'production' && warn(index === -1, `事件: '${type}' 没有注册在 DOM 中,因此不会被移除。`);\n handlers.splice(index, 1);\n }\n isAnyEventBinded() {\n const handlers = this.__handlers;\n const isAnyEventBinded = Object.keys(handlers).find(key => handlers[key].length);\n return Boolean(isAnyEventBinded);\n }\n}\n\nconst CHILDNODES = \"cn\" /* Shortcuts.Childnodes */;\nconst nodeId = incrementId();\nclass TaroNode extends TaroEventTarget {\n constructor() {\n super();\n this.parentNode = null;\n this.childNodes = [];\n this.hydrate = (node) => () => hydrate(node);\n this.uid = '_' + nodeId(); // dom 节点 id,开发者可修改\n this.sid = this.uid; // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this);\n }\n updateChildNodes(isClean) {\n const cleanChildNodes = () => [];\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node));\n return childNodes.map(hydrate);\n };\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n });\n }\n updateSingleChild(index) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child))\n return;\n if (index && childIndex < index)\n return;\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n });\n });\n }\n get _root() {\n var _a;\n return ((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a._root) || null;\n }\n findIndex(refChild) {\n const index = this.childNodes.indexOf(refChild);\n ensure(index !== -1, 'The node to be replaced is not a child of this node.');\n return index;\n }\n get _path() {\n const parentNode = this.parentNode;\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node));\n const indexOfNode = list.indexOf(this);\n const index = hooks.call('getPathIndex', indexOfNode);\n return `${parentNode._path}.${CHILDNODES}.${index}`;\n }\n return '';\n }\n get nextSibling() {\n const parentNode = this.parentNode;\n return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) + 1]) || null;\n }\n get previousSibling() {\n const parentNode = this.parentNode;\n return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) - 1]) || null;\n }\n get parentElement() {\n const parentNode = this.parentNode;\n if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.nodeType) === 1 /* NodeType.ELEMENT_NODE */) {\n return parentNode;\n }\n return null;\n }\n get firstChild() {\n return this.childNodes[0] || null;\n }\n get lastChild() {\n const childNodes = this.childNodes;\n return childNodes[childNodes.length - 1] || null;\n }\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n set textContent(text) {\n const removedNodes = this.childNodes.slice();\n const addedNodes = [];\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false });\n }\n if (text === '') {\n this.updateChildNodes(true);\n }\n else {\n const newText = env.document.createTextNode(text);\n addedNodes.push(newText);\n this.appendChild(newText);\n this.updateChildNodes();\n }\n // @Todo: appendChild 会多触发一次\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n removedNodes,\n addedNodes\n });\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n insertBefore(newChild, refChild, isReplace) {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue);\n return currentValue;\n }, refChild);\n return newChild;\n }\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false });\n let index = 0;\n // Data structure\n newChild.parentNode = this;\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild);\n this.childNodes.splice(index, 0, newChild);\n }\n else {\n // appendChild\n this.childNodes.push(newChild);\n }\n const childNodesLength = this.childNodes.length;\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1;\n if (isOnlyChild) {\n this.updateChildNodes();\n }\n else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n });\n }\n }\n else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n });\n }\n else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3;\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes();\n }\n else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index);\n }\n }\n }\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? refChild.nextSibling /** replaceChild */\n : (refChild || null),\n previousSibling: newChild.previousSibling\n });\n return newChild;\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n appendChild(newChild) {\n return this.insertBefore(newChild);\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n replaceChild(newChild, oldChild) {\n if (oldChild.parentNode !== this)\n return;\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true);\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false });\n return oldChild;\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n removeChild(child, options = {}) {\n const { cleanRef, doUpdate } = options;\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n });\n }\n // Data Structure\n const index = this.findIndex(child);\n this.childNodes.splice(index, 1);\n child.parentNode = null;\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child);\n }\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes();\n }\n return child;\n }\n remove(options) {\n var _a;\n (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this, options);\n }\n hasChildNodes() {\n return this.childNodes.length > 0;\n }\n enqueueUpdate(payload) {\n var _a;\n (_a = this._root) === null || _a === void 0 ? void 0 : _a.enqueueUpdate(payload);\n }\n get ownerDocument() {\n return env.document;\n }\n static extend(methodName, options) {\n extend(TaroNode, methodName, options);\n }\n}\n\n/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\nconst WEBKIT = 'webkit';\nconst styleProperties = [\n 'all',\n 'appearance',\n 'blockOverflow',\n 'blockSize',\n 'bottom',\n 'clear',\n 'contain',\n 'content',\n 'continue',\n 'cursor',\n 'direction',\n 'display',\n 'filter',\n 'float',\n 'gap',\n 'height',\n 'inset',\n 'isolation',\n 'left',\n 'letterSpacing',\n 'lightingColor',\n 'markerSide',\n 'mixBlendMode',\n 'opacity',\n 'order',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'rowGap',\n 'tabSize',\n 'tableLayout',\n 'top',\n 'userSelect',\n 'verticalAlign',\n 'visibility',\n 'voiceFamily',\n 'volume',\n 'whiteSpace',\n 'widows',\n 'width',\n 'zIndex',\n 'pointerEvents',\n 'aspectRatio'\n /** 非常用 style */\n // 'azimuth',\n // 'backfaceVisibility',\n // 'baselineShift',\n // 'captionSide',\n // 'chains',\n // 'dominantBaseline',\n // 'elevation',\n // 'emptyCells',\n // 'forcedColorAdjust',\n // 'glyphOrientationVertical',\n // 'hangingPunctuation',\n // 'hyphenateCharacter',\n // 'hyphens',\n // 'imageOrientation',\n // 'imageResolution',\n // 'orphans',\n // 'playDuring',\n // 'pointerEvents',\n // 'regionFragment',\n // 'richness',\n // 'running',\n // 'scrollBehavior',\n // 'speechRate',\n // 'stress',\n // 'stringSet',\n // 'unicodeBidi',\n // 'willChange',\n // 'writingMode',\n];\n// 减少文件体积\nfunction combine(prefix, list, excludeSelf) {\n !excludeSelf && styleProperties.push(prefix);\n list.forEach(item => {\n styleProperties.push(prefix + item);\n if (prefix === WEBKIT) {\n styleProperties.push('Webkit' + item);\n }\n });\n}\nconst color = 'Color';\nconst style = 'Style';\nconst width = 'Width';\nconst image = 'Image';\nconst size = 'Size';\nconst color_style_width = [color, style, width];\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image];\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius'];\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image];\nconst endRadius_startRadius = ['EndRadius', 'StartRadius'];\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top'];\nconst end_start = ['End', 'Start'];\nconst content_items_self = ['Content', 'Items', 'Self'];\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width];\nconst after_before = ['After', 'Before'];\ncombine('borderBlock', color_style_width);\ncombine('borderBlockEnd', color_style_width);\ncombine('borderBlockStart', color_style_width);\ncombine('outline', [...color_style_width, 'Offset']);\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing']);\ncombine('borderFit', ['Length', width]);\ncombine('borderInline', color_style_width);\ncombine('borderInlineEnd', color_style_width);\ncombine('borderInlineStart', color_style_width);\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image);\ncombine('borderRight', color_style_width_fitlength_fitwidth_image);\ncombine('borderTop', color_style_width_fitlength_fitwidth_image);\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image);\ncombine('textDecoration', [color, style, 'Line']);\ncombine('textEmphasis', [color, style, 'Position']);\ncombine('scrollMargin', bottom_left_right_top);\ncombine('scrollPadding', bottom_left_right_top);\ncombine('padding', bottom_left_right_top);\ncombine('margin', [...bottom_left_right_top, 'Trim']);\ncombine('scrollMarginBlock', end_start);\ncombine('scrollMarginInline', end_start);\ncombine('scrollPaddingBlock', end_start);\ncombine('scrollPaddingInline', end_start);\ncombine('gridColumn', end_start);\ncombine('gridRow', end_start);\ncombine('insetBlock', end_start);\ncombine('insetInline', end_start);\ncombine('marginBlock', end_start);\ncombine('marginInline', end_start);\ncombine('paddingBlock', end_start);\ncombine('paddingInline', end_start);\ncombine('pause', after_before);\ncombine('cue', after_before);\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type']);\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width]);\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width]);\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings']);\ncombine('transform', ['Box', 'Origin', style]);\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size]);\ncombine('listStyle', [image, 'Position', 'Type']);\ncombine('scrollSnap', ['Align', 'Stop', 'Type']);\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows']);\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows']);\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y']);\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction']);\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme']);\ncombine('textAlign', ['All', 'Last']);\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside']);\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction']);\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap']);\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate']);\ncombine('perspective', ['Origin']);\ncombine('clip', ['Path', 'Rule']);\ncombine('flow', ['From', 'Into']);\ncombine('align', ['Content', 'Items', 'Self'], true);\ncombine('alignment', ['Adjust', 'Baseline'], true);\ncombine('borderStart', endRadius_startRadius, true);\ncombine('borderEnd', endRadius_startRadius, true);\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true);\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true);\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true);\ncombine('break', [...after_before, 'Inside'], true);\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true);\ncombine('justify', content_items_self, true);\ncombine('place', content_items_self, true);\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true);\ncombine('min', blockSize_height_inlineSize_width, true);\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true);\ncombine('inline', ['BoxAlign', size, 'Sizing'], true);\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true);\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true);\ncombine('word', ['Break', 'Spacing', 'Wrap'], true);\ncombine('object', ['Fit', 'Position'], true);\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true);\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true);\n\nfunction recordCss(obj) {\n MutationObserver$1.record({\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n });\n}\nfunction enqueueUpdate(obj) {\n const element = obj._element;\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${\"st\" /* Shortcuts.Style */}`,\n value: obj.cssText\n });\n }\n}\nfunction setStyle(newVal, styleKey) {\n process.env.NODE_ENV !== 'production' && warn(isString(newVal) && newVal.length > PROPERTY_THRESHOLD, `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`);\n const old = this[styleKey];\n if (old === newVal)\n return;\n !this._pending && recordCss(this);\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey);\n delete this._value[styleKey];\n }\n else {\n this._usedStyleProp.add(styleKey);\n this._value[styleKey] = newVal;\n }\n !this._pending && enqueueUpdate(this);\n}\nfunction initStyle(ctor, styleProperties) {\n const properties = {};\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i];\n if (ctor[styleKey])\n return;\n properties[styleKey] = {\n get() {\n const val = this._value[styleKey];\n return isNull(val) || isUndefined(val) ? '' : val;\n },\n set(newVal) {\n setStyle.call(this, newVal, styleKey);\n }\n };\n }\n Object.defineProperties(ctor.prototype, properties);\n}\nfunction isCssVariable(propertyName) {\n return /^--/.test(propertyName);\n}\nclass Style {\n constructor(element) {\n this._element = element;\n this._usedStyleProp = new Set();\n this._value = {};\n }\n setCssVariables(styleKey) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || '';\n },\n set: (newVal) => {\n setStyle.call(this, newVal, styleKey);\n }\n });\n }\n get cssText() {\n if (!this._usedStyleProp.size)\n return '';\n const texts = [];\n this._usedStyleProp.forEach(key => {\n const val = this[key];\n if (isNull(val) || isUndefined(val))\n return;\n let styleName = isCssVariable(key) ? key : toDashed(key);\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`;\n }\n texts.push(`${styleName}: ${val};`);\n });\n return texts.join(' ');\n }\n set cssText(str) {\n this._pending = true;\n recordCss(this);\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop);\n });\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false;\n enqueueUpdate(this);\n return;\n }\n const rules = str.split(';');\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim();\n if (rule === '') {\n continue;\n }\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':');\n const val = valList.join(':');\n if (isUndefined(val)) {\n continue;\n }\n this.setProperty(propName.trim(), val.trim());\n }\n this._pending = false;\n enqueueUpdate(this);\n }\n setProperty(propertyName, value) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName);\n }\n else {\n propertyName = toCamelCase(propertyName);\n }\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName);\n }\n else {\n this[propertyName] = value;\n }\n }\n removeProperty(propertyName) {\n propertyName = toCamelCase(propertyName);\n if (!this._usedStyleProp.has(propertyName)) {\n return '';\n }\n const value = this[propertyName];\n this[propertyName] = undefined;\n return value;\n }\n getPropertyValue(propertyName) {\n propertyName = toCamelCase(propertyName);\n const value = this[propertyName];\n if (!value) {\n return '';\n }\n return value;\n }\n}\ninitStyle(Style, styleProperties);\nhooks.tap('injectNewStyleProperties', (newStyleProperties) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties);\n }\n else {\n if (typeof newStyleProperties !== 'string')\n return;\n initStyle(Style, [newStyleProperties]);\n }\n});\n\nfunction returnTrue() {\n return true;\n}\nfunction treeToArray(root, predict) {\n const array = [];\n const filter = predict !== null && predict !== void 0 ? predict : returnTrue;\n let object = root;\n while (object) {\n if (object.nodeType === 1 /* NodeType.ELEMENT_NODE */ && filter(object)) {\n array.push(object);\n }\n object = following(object, root);\n }\n return array;\n}\nfunction following(el, root) {\n const firstChild = el.firstChild;\n const isElmentTypeValid = el.nodeType === 1 /* NodeType.ELEMENT_NODE */ || el.nodeType === 9 /* NodeType.DOCUMENT_NODE */;\n // 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了\n if (firstChild && isElmentTypeValid) {\n return firstChild;\n }\n let current = el;\n do {\n if (current === root) {\n return null;\n }\n const nextSibling = current.nextSibling;\n if (nextSibling) {\n return nextSibling;\n }\n current = current.parentElement;\n } while (current);\n return null;\n}\n\nclass TaroElement extends TaroNode {\n constructor() {\n super();\n this.props = {};\n this.dataset = EMPTY_OBJ;\n this.nodeType = 1 /* NodeType.ELEMENT_NODE */;\n this.style = new Style(this);\n hooks.call('patchElement', this);\n }\n _stopPropagation(event) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this;\n // eslint-disable-next-line no-cond-assign\n while ((target = target.parentNode)) {\n const listeners = target.__handlers[event.type];\n if (!isArray(listeners)) {\n continue;\n }\n for (let i = listeners.length; i--;) {\n const l = listeners[i];\n l._stop = true;\n }\n }\n }\n get id() {\n return this.getAttribute(ID);\n }\n set id(val) {\n this.setAttribute(ID, val);\n }\n get className() {\n return this.getAttribute(CLASS) || '';\n }\n set className(val) {\n this.setAttribute(CLASS, val);\n }\n get cssText() {\n return this.getAttribute(STYLE) || '';\n }\n get classList() {\n return new ClassList(this.className, this);\n }\n get children() {\n return this.childNodes.filter(isElement);\n }\n get attributes() {\n const props = this.props;\n const propKeys = Object.keys(props);\n const style = this.style.cssText;\n const attrs = propKeys.map(key => ({ name: key, value: props[key] }));\n return attrs.concat(style ? { name: STYLE, value: style } : []);\n }\n get textContent() {\n let text = '';\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent;\n }\n return text;\n }\n set textContent(text) {\n super.textContent = text;\n }\n hasAttribute(qualifiedName) {\n return !isUndefined(this.props[qualifiedName]);\n }\n hasAttributes() {\n return this.attributes.length > 0;\n }\n get focus() {\n return function () {\n this.setAttribute(FOCUS, true);\n };\n }\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n set focus(value) {\n this.setAttribute(FOCUS, value);\n }\n blur() {\n this.setAttribute(FOCUS, false);\n }\n setAttribute(qualifiedName, value) {\n process.env.NODE_ENV !== 'production' && warn(isString(value) && value.length > PROPERTY_THRESHOLD, `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`);\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded();\n if (qualifiedName !== STYLE) {\n MutationObserver$1.record({\n target: this,\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n });\n }\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value;\n break;\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid);\n }\n value = String(value);\n this.props[qualifiedName] = this.uid = value;\n eventSource.set(value, this);\n break;\n default:\n this.props[qualifiedName] = value;\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null);\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value;\n }\n break;\n }\n // Serialization\n if (!this._root)\n return;\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num;\n const _path = this._path;\n qualifiedName = shortcutAttr(qualifiedName);\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value\n };\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias);\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n this.enqueueUpdate(payload);\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or static-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: value ? catchViewAlias : (this.isAnyEventBinded() ? viewAlias : staticViewAlias)\n });\n }\n else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: staticViewAlias\n });\n }\n }\n }\n removeAttribute(qualifiedName) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded();\n MutationObserver$1.record({\n target: this,\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n });\n if (qualifiedName === STYLE) {\n this.style.cssText = '';\n }\n else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName);\n if (isInterrupt) {\n return;\n }\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return;\n }\n delete this.props[qualifiedName];\n }\n // Serialization\n if (!this._root)\n return;\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const pureViewAlias = componentsAlias[PURE_VIEW]._num;\n const _path = this._path;\n qualifiedName = shortcutAttr(qualifiedName);\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: ''\n };\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias);\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n this.enqueueUpdate(payload);\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: this.isAnyEventBinded() ? viewAlias : (isHasExtractProp(this) ? staticViewAlias : pureViewAlias)\n });\n }\n else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: pureViewAlias\n });\n }\n }\n }\n getAttribute(qualifiedName) {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName];\n return attr !== null && attr !== void 0 ? attr : '';\n }\n getElementsByTagName(tagName) {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el);\n });\n }\n getElementsByClassName(className) {\n const classNames = className.trim().split(/\\s+/);\n return treeToArray(this, (el) => {\n const classList = el.classList;\n return classNames.every(c => classList.contains(c));\n });\n }\n dispatchEvent(event) {\n const cancelable = event.cancelable;\n const listeners = this.__handlers[event.type];\n if (!isArray(listeners)) {\n return false;\n }\n for (let i = listeners.length; i--;) {\n const listener = listeners[i];\n let result;\n if (listener._stop) {\n listener._stop = false;\n }\n else {\n hooks.call('modifyDispatchEvent', event, this);\n result = listener.call(this, event);\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true;\n }\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result);\n if (res) {\n event.mpEvent[EVENT_CALLBACK_RESULT] = result;\n }\n }\n if (event._end && event._stop) {\n break;\n }\n }\n if (event._stop) {\n this._stopPropagation(event);\n }\n else {\n event._stop = true;\n }\n return listeners != null;\n }\n addEventListener(type, handler, options) {\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes');\n let sideEffect = true;\n if (isObject(options) && options.sideEffect === false) {\n sideEffect = false;\n delete options.sideEffect;\n }\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias);\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const alias = componentsAlias[name]._num;\n this.enqueueUpdate({\n path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: alias\n });\n }\n super.addEventListener(type, handler, options);\n }\n removeEventListener(type, handler, sideEffect = true) {\n super.removeEventListener(type, handler);\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes');\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias);\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`;\n const valueAlias = componentsAlias[value]._num;\n this.enqueueUpdate({\n path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: valueAlias\n });\n }\n }\n static extend(methodName, options) {\n extend(TaroElement, methodName, options);\n }\n}\n\nconst options = {\n prerender: true,\n debug: false\n};\n\nfunction initPosition() {\n return {\n index: 0,\n column: 0,\n line: 0\n };\n}\nfunction feedPosition(position, str, len) {\n const start = position.index;\n const end = position.index = start + len;\n for (let i = start; i < end; i++) {\n const char = str.charAt(i);\n if (char === '\\n') {\n position.line++;\n position.column = 0;\n }\n else {\n position.column++;\n }\n }\n}\nfunction jumpPosition(position, str, end) {\n const len = end - position.index;\n return feedPosition(position, str, len);\n}\nfunction copyPosition(position) {\n return {\n index: position.index,\n line: position.line,\n column: position.column\n };\n}\nconst whitespace = /\\s/;\nfunction isWhitespaceChar(char) {\n return whitespace.test(char);\n}\nconst equalSign = /=/;\nfunction isEqualSignChar(char) {\n return equalSign.test(char);\n}\nfunction shouldBeIgnore(tagName) {\n const name = tagName.toLowerCase();\n if (options.html.skipElements.has(name)) {\n return true;\n }\n return false;\n}\nconst alphanumeric = /[A-Za-z0-9]/;\nfunction findTextEnd(str, index) {\n while (true) {\n const textEnd = str.indexOf('<', index);\n if (textEnd === -1) {\n return textEnd;\n }\n const char = str.charAt(textEnd + 1);\n if (char === '/' || char === '!' || alphanumeric.test(char)) {\n return textEnd;\n }\n index = textEnd + 1;\n }\n}\nfunction isWordEnd(cursor, wordBegin, html) {\n if (!isWhitespaceChar(html.charAt(cursor)))\n return false;\n const len = html.length;\n // backwrad\n for (let i = cursor - 1; i > wordBegin; i--) {\n const char = html.charAt(i);\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char))\n return false;\n break;\n }\n }\n // forward\n for (let i = cursor + 1; i < len; i++) {\n const char = html.charAt(i);\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char))\n return false;\n return true;\n }\n }\n}\nclass Scaner {\n constructor(html) {\n this.tokens = [];\n this.position = initPosition();\n this.html = html;\n }\n scan() {\n const { html, position } = this;\n const len = html.length;\n while (position.index < len) {\n const start = position.index;\n this.scanText();\n if (position.index === start) {\n const isComment = html.startsWith('!--', start + 1);\n if (isComment) {\n this.scanComment();\n }\n else {\n const tagName = this.scanTag();\n if (shouldBeIgnore(tagName)) {\n this.scanSkipTag(tagName);\n }\n }\n }\n }\n return this.tokens;\n }\n scanText() {\n const type = 'text';\n const { html, position } = this;\n let textEnd = findTextEnd(html, position.index);\n if (textEnd === position.index) {\n return;\n }\n if (textEnd === -1) {\n textEnd = html.length;\n }\n const start = copyPosition(position);\n const content = html.slice(position.index, textEnd);\n jumpPosition(position, html, textEnd);\n const end = copyPosition(position);\n this.tokens.push({ type, content, position: { start, end } });\n }\n scanComment() {\n const type = 'comment';\n const { html, position } = this;\n const start = copyPosition(position);\n feedPosition(position, html, 4); // \"<!--\".length\n let contentEnd = html.indexOf('-->', position.index);\n let commentEnd = contentEnd + 3; // \"-->\".length\n if (contentEnd === -1) {\n contentEnd = commentEnd = html.length;\n }\n const content = html.slice(position.index, contentEnd);\n jumpPosition(position, html, commentEnd);\n this.tokens.push({\n type,\n content,\n position: {\n start,\n end: copyPosition(position)\n }\n });\n }\n scanTag() {\n this.scanTagStart();\n const tagName = this.scanTagName();\n this.scanAttrs();\n this.scanTagEnd();\n return tagName;\n }\n scanTagStart() {\n const type = 'tag-start';\n const { html, position } = this;\n const secondChar = html.charAt(position.index + 1);\n const close = secondChar === '/';\n const start = copyPosition(position);\n feedPosition(position, html, close ? 2 : 1);\n this.tokens.push({ type, close, position: { start } });\n }\n scanTagEnd() {\n const type = 'tag-end';\n const { html, position } = this;\n const firstChar = html.charAt(position.index);\n const close = firstChar === '/';\n feedPosition(position, html, close ? 2 : 1);\n const end = copyPosition(position);\n this.tokens.push({ type, close, position: { end } });\n }\n scanTagName() {\n const type = 'tag';\n const { html, position } = this;\n const len = html.length;\n let start = position.index;\n while (start < len) {\n const char = html.charAt(start);\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n if (isTagChar)\n break;\n start++;\n }\n let end = start + 1;\n while (end < len) {\n const char = html.charAt(end);\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n if (!isTagChar)\n break;\n end++;\n }\n jumpPosition(position, html, end);\n const tagName = html.slice(start, end);\n this.tokens.push({\n type,\n content: tagName\n });\n return tagName;\n }\n scanAttrs() {\n const { html, position, tokens } = this;\n let cursor = position.index;\n let quote = null; // null, single-, or double-quote\n let wordBegin = cursor; // index of word start\n const words = []; // \"key\", \"key=value\", \"key='value'\", etc\n const len = html.length;\n while (cursor < len) {\n const char = html.charAt(cursor);\n if (quote) {\n const isQuoteEnd = char === quote;\n if (isQuoteEnd) {\n quote = null;\n }\n cursor++;\n continue;\n }\n const isTagEnd = char === '/' || char === '>';\n if (isTagEnd) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor));\n }\n break;\n }\n if (isWordEnd(cursor, wordBegin, html)) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor));\n }\n wordBegin = cursor + 1;\n cursor++;\n continue;\n }\n const isQuoteStart = char === '\\'' || char === '\"';\n if (isQuoteStart) {\n quote = char;\n cursor++;\n continue;\n }\n cursor++;\n }\n jumpPosition(position, html, cursor);\n const wLen = words.length;\n const type = 'attribute';\n for (let i = 0; i < wLen; i++) {\n const word = words[i];\n const isNotPair = word.includes('=');\n if (isNotPair) {\n const secondWord = words[i + 1];\n if (secondWord && secondWord.startsWith('=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n const thirdWord = words[i + 2];\n i += 1;\n if (thirdWord) {\n const newWord = word + '=' + thirdWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n }\n }\n if (word.endsWith('=')) {\n const secondWord = words[i + 1];\n if (secondWord && !secondWord.includes('=')) {\n const newWord = word + secondWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n const newWord = word.slice(0, -1);\n tokens.push({ type, content: newWord });\n continue;\n }\n tokens.push({ type, content: word });\n }\n }\n scanSkipTag(tagName) {\n const { html, position } = this;\n const safeTagName = tagName.toLowerCase();\n const len = html.length;\n while (position.index < len) {\n const nextTag = html.indexOf('</', position.index);\n if (nextTag === -1) {\n this.scanText();\n break;\n }\n jumpPosition(position, html, nextTag);\n const name = this.scanTag();\n if (safeTagName === name.toLowerCase()) {\n break;\n }\n }\n }\n}\n\nfunction unquote(str) {\n const car = str.charAt(0);\n const end = str.length - 1;\n const isQuoteStart = car === '\"' || car === \"'\";\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end);\n }\n return str;\n}\n\nconst LEFT_BRACKET = '{';\nconst RIGHT_BRACKET = '}';\nconst CLASS_SELECTOR = '.';\nconst ID_SELECTOR = '#';\nconst CHILD_COMBINATOR = '>';\nconst GENERAL_SIBLING_COMBINATOR = '~';\nconst ADJACENT_SIBLING_COMBINATOR = '+';\nclass StyleTagParser {\n constructor() {\n this.styles = [];\n }\n extractStyle(src) {\n const REG_STYLE = /<style\\s?[^>]*>((.|\\n|\\s)+?)<\\/style>/g;\n let html = src;\n // let html = src.replace(/\\n/g, '')\n html = html.replace(REG_STYLE, (_, $1) => {\n const style = $1.trim();\n this.stringToSelector(style);\n return '';\n });\n return html.trim();\n }\n stringToSelector(style) {\n let lb = style.indexOf(LEFT_BRACKET);\n while (lb > -1) {\n const rb = style.indexOf(RIGHT_BRACKET);\n const selectors = style.slice(0, lb).trim();\n let content = style.slice(lb + 1, rb);\n content = content.replace(/:(.*);/g, function (_, $1) {\n const t = $1.trim().replace(/ +/g, '+++');\n return `:${t};`;\n });\n content = content.replace(/ /g, '');\n content = content.replace(/\\+\\+\\+/g, ' ');\n if (!(/;$/.test(content))) {\n content += ';';\n }\n selectors.split(',').forEach(src => {\n const selectorList = this.parseSelector(src);\n this.styles.push({\n content,\n selectorList\n });\n });\n style = style.slice(rb + 1);\n lb = style.indexOf(LEFT_BRACKET);\n }\n // console.log('res this.styles: ', this.styles)\n }\n parseSelector(src) {\n const list = src\n .trim()\n .replace(/ *([>~+]) */g, ' $1')\n .replace(/ +/g, ' ')\n .replace(/\\[\\s*([^[\\]=\\s]+)\\s*=\\s*([^[\\]=\\s]+)\\s*\\]/g, '[$1=$2]')\n .split(' ');\n const selectors = list.map(item => {\n const firstChar = item.charAt(0);\n const selector = {\n isChild: firstChar === CHILD_COMBINATOR,\n isGeneralSibling: firstChar === GENERAL_SIBLING_COMBINATOR,\n isAdjacentSibling: firstChar === ADJACENT_SIBLING_COMBINATOR,\n tag: null,\n id: null,\n class: [],\n attrs: []\n };\n item = item.replace(/^[>~+]/, '');\n // 属性选择器\n item = item.replace(/\\[(.+?)\\]/g, function (_, $1) {\n const [key, value] = $1.split('=');\n const all = $1.indexOf('=') === -1;\n const attr = {\n all,\n key,\n value: all ? null : value\n };\n selector.attrs.push(attr);\n return '';\n });\n item = item.replace(/([.#][A-Za-z0-9-_]+)/g, function (_, $1) {\n if ($1[0] === ID_SELECTOR) {\n // id 选择器\n selector.id = $1.substr(1);\n }\n else if ($1[0] === CLASS_SELECTOR) {\n // class 选择器\n selector.class.push($1.substr(1));\n }\n return '';\n });\n // 标签选择器\n if (item !== '') {\n selector.tag = item;\n }\n return selector;\n });\n return selectors;\n }\n matchStyle(tagName, el, list) {\n const res = sortStyles(this.styles).reduce((str, { content, selectorList }, i) => {\n let idx = list[i];\n let selector = selectorList[idx];\n const nextSelector = selectorList[idx + 1];\n if ((nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isGeneralSibling) || (nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isAdjacentSibling)) {\n selector = nextSelector;\n idx += 1;\n list[i] += 1;\n }\n let isMatch = this.matchCurrent(tagName, el, selector);\n if (isMatch && selector.isGeneralSibling) {\n let prev = getPreviousElement(el);\n while (prev) {\n if (prev.h5tagName && this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])) {\n isMatch = true;\n break;\n }\n prev = getPreviousElement(prev);\n isMatch = false;\n }\n }\n if (isMatch && selector.isAdjacentSibling) {\n const prev = getPreviousElement(el);\n if (!prev || !prev.h5tagName) {\n isMatch = false;\n }\n else {\n const isSiblingMatch = this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1]);\n if (!isSiblingMatch) {\n isMatch = false;\n }\n }\n }\n if (isMatch) {\n if (idx === selectorList.length - 1) {\n return str + content;\n }\n else if (idx < selectorList.length - 1) {\n list[i] += 1;\n }\n }\n else {\n // 直接子代组合器: >\n if (selector.isChild && idx > 0) {\n list[i] -= 1;\n if (this.matchCurrent(tagName, el, selectorList[list[i]])) {\n list[i] += 1;\n }\n }\n }\n return str;\n }, '');\n return res;\n }\n matchCurrent(tagName, el, selector) {\n // 标签选择器\n if (selector.tag && selector.tag !== tagName)\n return false;\n // id 选择器\n if (selector.id && selector.id !== el.id)\n return false;\n // class 选择器\n if (selector.class.length) {\n const classList = el.className.split(' ');\n for (let i = 0; i < selector.class.length; i++) {\n const cls = selector.class[i];\n if (classList.indexOf(cls) === -1) {\n return false;\n }\n }\n }\n // 属性选择器\n if (selector.attrs.length) {\n for (let i = 0; i < selector.attrs.length; i++) {\n const { all, key, value } = selector.attrs[i];\n if (all && !el.hasAttribute(key)) {\n return false;\n }\n else {\n const attr = el.getAttribute(key);\n if (attr !== unquote(value || '')) {\n return false;\n }\n }\n }\n }\n return true;\n }\n}\nfunction getPreviousElement(el) {\n const parent = el.parentElement;\n if (!parent)\n return null;\n const prev = el.previousSibling;\n if (!prev)\n return null;\n if (prev.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n return prev;\n }\n else {\n return getPreviousElement(prev);\n }\n}\n// 根据 css selector 权重排序: 权重大的靠后\n// @WARN 不考虑伪类\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#specificity_2\nfunction sortStyles(styles) {\n return styles.sort((s1, s2) => {\n const hundreds1 = getHundredsWeight(s1.selectorList);\n const hundreds2 = getHundredsWeight(s2.selectorList);\n if (hundreds1 !== hundreds2)\n return hundreds1 - hundreds2;\n const tens1 = getTensWeight(s1.selectorList);\n const tens2 = getTensWeight(s2.selectorList);\n if (tens1 !== tens2)\n return tens1 - tens2;\n const ones1 = getOnesWeight(s1.selectorList);\n const ones2 = getOnesWeight(s2.selectorList);\n return ones1 - ones2;\n });\n}\nfunction getHundredsWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + (cur.id ? 1 : 0), 0);\n}\nfunction getTensWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + cur.class.length + cur.attrs.length, 0);\n}\nfunction getOnesWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + (cur.tag ? 1 : 0), 0);\n}\n\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\nconst specialMiniElements = {\n img: 'image',\n iframe: 'web-view'\n};\nconst internalCompsList = Object.keys(internalComponents)\n .map(i => i.toLowerCase())\n .join(',');\n// https://developers.weixin.qq.com/miniprogram/dev/component\nconst isMiniElements = makeMap(internalCompsList, true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\nconst isInlineElements = makeMap('a,i,abbr,iframe,select,acronym,slot,small,span,bdi,kbd,strong,big,map,sub,sup,br,mark,mark,meter,template,canvas,textarea,cite,object,time,code,output,u,data,picture,tt,datalist,var,dfn,del,q,em,s,embed,samp,b', true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nconst isBlockElements = makeMap('address,fieldset,li,article,figcaption,main,aside,figure,nav,blockquote,footer,ol,details,form,p,dialog,h1,h2,h3,h4,h5,h6,pre,dd,header,section,div,hgroup,table,dl,hr,ul,dt', true);\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n};\nfunction hasTerminalParent(tagName, stack) {\n const tagParents = closingTagAncestorBreakers[tagName];\n if (tagParents) {\n let currentIndex = stack.length - 1;\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName;\n if (parentTagName === tagName) {\n break;\n }\n if (tagParents && tagParents.includes(parentTagName)) {\n return true;\n }\n currentIndex--;\n }\n }\n return false;\n}\nfunction getTagName(tag) {\n if (options.html.renderHTMLTag) {\n return tag;\n }\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag];\n }\n else if (isMiniElements(tag)) {\n return tag;\n }\n else if (isBlockElements(tag)) {\n return 'view';\n }\n else if (isInlineElements(tag)) {\n return 'text';\n }\n return 'view';\n}\nfunction splitEqual(str) {\n const sep = '=';\n const idx = str.indexOf(sep);\n if (idx === -1)\n return [str];\n const key = str.slice(0, idx).trim();\n const value = str.slice(idx + sep.length).trim();\n return [key, value];\n}\nfunction format(children, document, styleOptions, parent) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false;\n }\n else if (child.type === 'text') {\n return child.content !== '';\n }\n return true;\n })\n .map((child) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content);\n if (isFunction(options.html.transformText)) {\n text = options.html.transformText(text, child);\n }\n parent === null || parent === void 0 ? void 0 : parent.appendChild(text);\n return text;\n }\n const el = document.createElement(getTagName(child.tagName));\n el.h5tagName = child.tagName;\n parent === null || parent === void 0 ? void 0 : parent.appendChild(el);\n if (!options.html.renderHTMLTag) {\n el.className = `h5-${child.tagName}`;\n }\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i];\n const [key, value] = splitEqual(attr);\n if (key === 'class') {\n el.className += ' ' + unquote(value);\n }\n else if (key[0] === 'o' && key[1] === 'n') {\n continue;\n }\n else {\n el.setAttribute(key, value == null ? true : unquote(value));\n }\n }\n const { styleTagParser, descendantList } = styleOptions;\n const list = descendantList.slice();\n const style = styleTagParser.matchStyle(child.tagName, el, list);\n el.setAttribute('style', style + el.style.cssText);\n // console.log('style, ', style)\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el);\n if (isFunction(options.html.transformElement)) {\n return options.html.transformElement(el, child);\n }\n return el;\n });\n}\nfunction parser(html, document) {\n const styleTagParser = new StyleTagParser();\n html = styleTagParser.extractStyle(html);\n const tokens = new Scaner(html).scan();\n const root = { tagName: '', children: [], type: 'element', attributes: [] };\n const state = { tokens, options, cursor: 0, stack: [root] };\n parse(state);\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n });\n}\nfunction parse(state) {\n const { tokens, stack } = state;\n let { cursor } = state;\n const len = tokens.length;\n let nodes = stack[stack.length - 1].children;\n while (cursor < len) {\n const token = tokens[cursor];\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token);\n cursor++;\n continue;\n }\n const tagToken = tokens[++cursor];\n cursor++;\n const tagName = tagToken.content.toLowerCase();\n if (token.close) {\n let index = stack.length;\n let shouldRewind = false;\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true;\n break;\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor];\n if (endToken.type !== 'tag-end')\n break;\n cursor++;\n }\n if (shouldRewind) {\n stack.splice(index);\n break;\n }\n else {\n continue;\n }\n }\n const isClosingTag = options.html.closingElements.has(tagName);\n let shouldRewindToAutoClose = isClosingTag;\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack);\n }\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1;\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex);\n const previousIndex = currentIndex - 1;\n nodes = stack[previousIndex].children;\n break;\n }\n currentIndex = currentIndex - 1;\n }\n }\n const attributes = [];\n let attrToken;\n while (cursor < len) {\n attrToken = tokens[cursor];\n if (attrToken.type === 'tag-end')\n break;\n attributes.push(attrToken.content);\n cursor++;\n }\n cursor++;\n const children = [];\n const element = {\n type: 'element',\n tagName: tagToken.content,\n attributes,\n children\n };\n nodes.push(element);\n const hasChildren = !(attrToken.close || options.html.voidElements.has(tagName));\n if (hasChildren) {\n stack.push({ tagName, children });\n const innerState = { tokens, cursor, stack };\n parse(innerState);\n cursor = innerState.cursor;\n }\n }\n state.cursor = cursor;\n}\n\noptions.html = {\n skipElements: new Set(['style', 'script']),\n voidElements: new Set([\n '!doctype', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link',\n 'meta', 'param', 'source', 'track', 'wbr'\n ]),\n closingElements: new Set([\n 'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n ]),\n renderHTMLTag: false\n};\nfunction setInnerHTML(element, html) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n const children = parser(html, element.ownerDocument);\n for (let i = 0; i < children.length; i++) {\n element.appendChild(children[i]);\n }\n}\n\nfunction getBoundingClientRectImpl() {\n if (!options.miniGlobal)\n return Promise.resolve(null);\n return new Promise(resolve => {\n const query = options.miniGlobal.createSelectorQuery();\n query.select(`#${this.uid}`).boundingClientRect(res => {\n resolve(res);\n }).exec();\n });\n}\nfunction getTemplateContent(ctx) {\n if (ctx.nodeName === 'template') {\n const document = ctx.ownerDocument;\n const content = document.createElement(DOCUMENT_FRAGMENT);\n content.childNodes = ctx.childNodes;\n ctx.childNodes = [content];\n content.parentNode = ctx;\n content.childNodes.forEach(nodes => {\n nodes.parentNode = content;\n });\n return content;\n }\n}\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nfunction insertAdjacentHTML(position, html) {\n var _a, _b;\n const parsedNodes = parser(html, this.ownerDocument);\n for (let i = 0; i < parsedNodes.length; i++) {\n const n = parsedNodes[i];\n switch (position) {\n case 'beforebegin':\n (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(n, this);\n break;\n case 'afterbegin':\n if (this.hasChildNodes()) {\n this.insertBefore(n, this.childNodes[0]);\n }\n else {\n this.appendChild(n);\n }\n break;\n case 'beforeend':\n this.appendChild(n);\n break;\n case 'afterend':\n (_b = this.parentNode) === null || _b === void 0 ? void 0 : _b.appendChild(n);\n break;\n }\n }\n}\nfunction cloneNode(isDeep = false) {\n const document = this.ownerDocument;\n let newNode;\n if (this.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n newNode = document.createElement(this.nodeName);\n }\n else if (this.nodeType === 3 /* NodeType.TEXT_NODE */) {\n newNode = document.createTextNode('');\n }\n for (const key in this) {\n const value = this[key];\n // eslint-disable-next-line valid-typeof\n if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n newNode[key] = Object.assign({}, value);\n }\n else if (key === '_value') {\n newNode[key] = value;\n }\n else if (key === STYLE) {\n newNode.style._value = Object.assign({}, value._value);\n newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp));\n }\n }\n if (isDeep) {\n newNode.childNodes = this.childNodes.map(node => node.cloneNode(true));\n }\n return newNode;\n}\nfunction contains(node) {\n let isContains = false;\n this.childNodes.some(childNode => {\n const { uid } = childNode;\n if (uid === node.uid || uid === node.id || childNode.contains(node)) {\n isContains = true;\n return true;\n }\n });\n return isContains;\n}\n\nif (process.env.TARO_PLATFORM !== 'web') {\n if (ENABLE_INNER_HTML) {\n TaroNode.extend('innerHTML', {\n set(html) {\n setInnerHTML.call(this, this, html);\n },\n get() {\n return '';\n }\n });\n if (ENABLE_ADJACENT_HTML) {\n TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML);\n }\n }\n if (ENABLE_CLONE_NODE) {\n TaroNode.extend('cloneNode', cloneNode);\n }\n if (ENABLE_CONTAINS) {\n TaroNode.extend('contains', contains);\n }\n if (ENABLE_SIZE_APIS) {\n TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl);\n }\n if (ENABLE_TEMPLATE_CONTENT) {\n TaroElement.extend('content', {\n get() {\n return getTemplateContent(this);\n }\n });\n }\n}\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nclass TaroEvent {\n constructor(type, opts, event) {\n this._stop = false;\n this._end = false;\n this.defaultPrevented = false;\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n this.button = 0;\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n this.timeStamp = Date.now();\n this.type = type.toLowerCase();\n this.mpEvent = event;\n this.bubbles = Boolean(opts && opts.bubbles);\n this.cancelable = Boolean(opts && opts.cancelable);\n }\n stopPropagation() {\n this._stop = true;\n }\n stopImmediatePropagation() {\n this._end = this._stop = true;\n }\n preventDefault() {\n this.defaultPrevented = true;\n }\n get target() {\n var _a, _b, _c, _d, _e;\n const cacheTarget = this.cacheTarget;\n if (!cacheTarget) {\n const target = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.target) || null);\n const currentEle = env.document.getElementById(((_b = target.dataset) === null || _b === void 0 ? void 0 : _b.sid) || target.id || null);\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(((_c = target.targetDataset) === null || _c === void 0 ? void 0 : _c.sid) || ((_d = target.dataset) === null || _d === void 0 ? void 0 : _d.sid) || target.id || null);\n target.dataset = Object.assign(Object.assign({}, (currentEle !== null ? currentEle.dataset : EMPTY_OBJ)), (element !== null ? element.dataset : EMPTY_OBJ));\n for (const key in (_e = this.mpEvent) === null || _e === void 0 ? void 0 : _e.detail) {\n target[key] = this.mpEvent.detail[key];\n }\n this.cacheTarget = target;\n return target;\n }\n else {\n return cacheTarget;\n }\n }\n get currentTarget() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const cacheCurrentTarget = this.cacheCurrentTarget;\n if (!cacheCurrentTarget) {\n const doc = env.document;\n const currentTarget = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.currentTarget) || null);\n const element = doc.getElementById(((_b = currentTarget.dataset) === null || _b === void 0 ? void 0 : _b.sid) || currentTarget.id || null);\n const targetElement = doc.getElementById(((_e = (_d = (_c = this.mpEvent) === null || _c === void 0 ? void 0 : _c.target) === null || _d === void 0 ? void 0 : _d.dataset) === null || _e === void 0 ? void 0 : _e.sid) || ((_g = (_f = this.mpEvent) === null || _f === void 0 ? void 0 : _f.target) === null || _g === void 0 ? void 0 : _g.id) || null);\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target;\n return this.target;\n }\n currentTarget.dataset = element.dataset;\n for (const key in (_h = this.mpEvent) === null || _h === void 0 ? void 0 : _h.detail) {\n currentTarget[key] = this.mpEvent.detail[key];\n }\n this.cacheCurrentTarget = currentTarget;\n return currentTarget;\n }\n else {\n return cacheCurrentTarget;\n }\n }\n}\nfunction createEvent(event, node) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true });\n }\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event);\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue;\n }\n else {\n domEv[key] = event[key];\n }\n }\n if (domEv.type === CONFIRM && (node === null || node === void 0 ? void 0 : node.nodeName) === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13;\n }\n return domEv;\n}\nconst eventsBatch = {};\nfunction getEventCBResult(event) {\n const result = event[EVENT_CALLBACK_RESULT];\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT];\n }\n return result;\n}\n// 小程序的事件代理回调函数\nfunction eventHandler(event) {\n var _a, _b;\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: event._type // ohos only\n });\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: event._detail || Object.assign({}, event) // ohos only\n });\n event.currentTarget = event.currentTarget || event.target || Object.assign({}, event);\n hooks.call('modifyMpEventImpl', event);\n const currentTarget = event.currentTarget;\n const id = ((_a = currentTarget.dataset) === null || _a === void 0 ? void 0 : _a.sid /** sid */) || currentTarget.id /** uid */ || ((_b = event.detail) === null || _b === void 0 ? void 0 : _b.id) || '';\n const node = env.document.getElementById(id);\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node);\n hooks.call('modifyTaroEvent', e, node);\n hooks.call('dispatchTaroEvent', e, node);\n hooks.call('dispatchTaroEventFinish', e, node);\n };\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type;\n if (!hooks.call('isBubbleEvents', type) ||\n !isParentBinded(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn());\n delete eventsBatch[type];\n }\n dispatch();\n });\n return getEventCBResult(event);\n }\n else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] || (eventsBatch[type] = [])).push(dispatch);\n }\n }\n else {\n dispatch();\n return getEventCBResult(event);\n }\n }\n}\n\nclass FormElement extends TaroElement {\n get type() {\n var _a;\n return (_a = this.props[TYPE]) !== null && _a !== void 0 ? _a : '';\n }\n set type(val) {\n this.setAttribute(TYPE, val);\n }\n get value() {\n // eslint-disable-next-line dot-notation\n const val = this.props[VALUE];\n return val == null ? '' : val;\n }\n set value(val) {\n this.setAttribute(VALUE, val);\n }\n dispatchEvent(event) {\n if (event.mpEvent) {\n const val = event.mpEvent.detail.value;\n if (event.type === CHANGE) {\n this.props.value = val;\n }\n else if (event.type === INPUT) {\n // Web 规范中表单组件的 value 应该跟着输入改变\n // 只是改 this.props.value 的话不会进行 setData,因此这里修改 this.value。\n // 只测试了 React、Vue、Vue3 input 组件的 onInput 事件,onChange 事件不确定有没有副作用,所以暂不修改。\n this.value = val;\n }\n }\n return super.dispatchEvent(event);\n }\n}\n\nclass Performance {\n constructor() {\n this.recorder = new Map();\n }\n start(id) {\n if (!options.debug) {\n return;\n }\n this.recorder.set(id, Date.now());\n }\n stop(id) {\n if (!options.debug) {\n return;\n }\n const now = Date.now();\n const prev = this.recorder.get(id);\n this.recorder.delete(id);\n const time = now - prev;\n // eslint-disable-next-line no-console\n console.log(`${id} 时长: ${time}ms`);\n }\n}\nconst perf = new Performance();\n\nfunction findCustomWrapper(root, dataPathArr) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1);\n let currentData = root;\n let customWrapper;\n let splitedPath = '';\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes');\n currentData = currentData[key];\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el));\n }\n if (isUndefined(currentData))\n return true;\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid);\n if (res) {\n customWrapper = res;\n splitedPath = dataPathArr.slice(i + 2).join('.');\n }\n }\n });\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n };\n }\n}\nclass TaroRootElement extends TaroElement {\n constructor() {\n super();\n this.updatePayloads = [];\n this.updateCallbacks = [];\n this.pendingUpdate = false;\n this.ctx = null;\n this.nodeName = ROOT_STR;\n this.tagName = ROOT_STR.toUpperCase();\n }\n get _path() {\n return ROOT_STR;\n }\n get _root() {\n return this;\n }\n enqueueUpdate(payload) {\n this.updatePayloads.push(payload);\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate();\n }\n }\n performUpdate(initRender = false, prerender) {\n this.pendingUpdate = true;\n const ctx = hooks.call('proxyToRaw', this.ctx);\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`;\n perf.start(setDataMark);\n const data = Object.create(null);\n const resetPaths = new Set(initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []);\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift();\n if (path.endsWith(\"cn\" /* Shortcuts.Childnodes */)) {\n resetPaths.add(path);\n }\n data[path] = value;\n }\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path];\n }\n });\n const value = data[path];\n if (isFunction(value)) {\n data[path] = value();\n }\n }\n // 预渲染\n if (isFunction(prerender))\n return prerender(data);\n // 正常渲染\n this.pendingUpdate = false;\n let normalUpdate = {};\n const customWrapperMap = new Map();\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data;\n }\n else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.');\n const found = findCustomWrapper(this, dataPathArr);\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found;\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, Object.assign(Object.assign({}, (customWrapperMap.get(customWrapper) || {})), { [`i.${splitedPath}`]: data[p] }));\n }\n else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p];\n }\n }\n }\n const customWrapperCount = customWrapperMap.size;\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0;\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0);\n let executeTime = 0;\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark);\n this.flushUpdateCallback();\n initRender && perf.stop(PAGE_INIT);\n }\n };\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data);\n }\n ctx.setData(data, cb);\n });\n }\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate);\n }\n ctx.setData(normalUpdate, cb);\n }\n }, 0);\n }\n enqueueUpdateCallback(cb, ctx) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb();\n });\n }\n flushUpdateCallback() {\n const updateCallbacks = this.updateCallbacks;\n if (!updateCallbacks.length)\n return;\n const copies = updateCallbacks.slice(0);\n this.updateCallbacks.length = 0;\n for (let i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n}\n\nclass TaroText extends TaroNode {\n constructor(value) {\n super();\n this.nodeType = 3 /* NodeType.TEXT_NODE */;\n this.nodeName = '#text';\n this._value = value;\n }\n set textContent(text) {\n MutationObserver$1.record({\n target: this,\n type: \"characterData\" /* MutationRecordType.CHARACTER_DATA */,\n oldValue: this._value\n });\n this._value = text;\n this.enqueueUpdate({\n path: `${this._path}.${\"v\" /* Shortcuts.Text */}`,\n value: text\n });\n }\n get textContent() {\n return this._value;\n }\n set nodeValue(text) {\n this.textContent = text;\n }\n get nodeValue() {\n return this._value;\n }\n set data(text) {\n this.textContent = text;\n }\n get data() {\n return this._value;\n }\n}\n\nvar _dict, _a;\nconst findReg = /[!'()~]|%20|%00/g;\nconst plusReg = /\\+/g;\nconst replaceCharMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n};\nfunction replacer(match) {\n return replaceCharMap[match];\n}\nfunction appendTo(dict, name, value) {\n const res = isArray(value) ? value.join(',') : value;\n if (name in dict)\n dict[name].push(res);\n else\n dict[name] = [res];\n}\nfunction addEach(value, key) {\n appendTo(this, key, value);\n}\nfunction decode(str) {\n return decodeURIComponent(str.replace(plusReg, ' '));\n}\nfunction encode(str) {\n return encodeURIComponent(str).replace(findReg, replacer);\n}\nconst URLSearchParams = process.env.TARO_PLATFORM === 'web' ? env.window.URLSearchParams : (_a = class {\n constructor(query) {\n _dict.set(this, Object.create(null));\n query !== null && query !== void 0 ? query : (query = '');\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n if (typeof query === 'string') {\n if (query.charAt(0) === '?') {\n query = query.slice(1);\n }\n for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n const value = pairs[i];\n const index = value.indexOf('=');\n // 针对不规范的 url 参数做容错处理,如:word=你%好\n try {\n if (index > -1) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n }\n else if (value.length) {\n appendTo(dict, decode(value), '');\n }\n }\n catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] URL 参数 ${value} decode 异常`);\n }\n }\n }\n }\n else {\n if (isArray(query)) {\n for (let i = 0, length = query.length; i < length; i++) {\n const value = query[i];\n appendTo(dict, value[0], value[1]);\n }\n }\n else if (query.forEach) {\n query.forEach(addEach, dict);\n }\n else {\n for (const key in query) {\n appendTo(dict, key, query[key]);\n }\n }\n }\n }\n append(name, value) {\n appendTo(__classPrivateFieldGet(this, _dict, \"f\"), name, value);\n }\n delete(name) {\n delete __classPrivateFieldGet(this, _dict, \"f\")[name];\n }\n get(name) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n return name in dict ? dict[name][0] : null;\n }\n getAll(name) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n return name in dict ? dict[name].slice(0) : [];\n }\n has(name) {\n return name in __classPrivateFieldGet(this, _dict, \"f\");\n }\n keys() {\n return Object.keys(__classPrivateFieldGet(this, _dict, \"f\"));\n }\n set(name, value) {\n __classPrivateFieldGet(this, _dict, \"f\")[name] = ['' + value];\n }\n forEach(callback, thisArg) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n Object.getOwnPropertyNames(dict).forEach(function (name) {\n dict[name].forEach(function (value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n }\n toJSON() {\n return {};\n }\n toString() {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n const query = [];\n for (const key in dict) {\n const name = encode(key);\n for (let i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n }\n },\n _dict = new WeakMap(),\n _a);\n\nvar _TaroURL_hash, _TaroURL_hostname, _TaroURL_pathname, _TaroURL_port, _TaroURL_protocol, _TaroURL_search;\nclass TaroURL {\n static createObjectURL() {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.');\n }\n static revokeObjectURL() {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.');\n }\n constructor(url, base) {\n /* private property */\n _TaroURL_hash.set(this, '');\n _TaroURL_hostname.set(this, '');\n _TaroURL_pathname.set(this, '');\n _TaroURL_port.set(this, '');\n _TaroURL_protocol.set(this, '');\n _TaroURL_search.set(this, void 0);\n if (!isString(url))\n url = String(url);\n const parseResult = parseUrlBase(url, base);\n const { hash, hostname, pathname, port, protocol, search } = parseResult;\n __classPrivateFieldSet(this, _TaroURL_hash, hash, \"f\");\n __classPrivateFieldSet(this, _TaroURL_hostname, hostname, \"f\");\n __classPrivateFieldSet(this, _TaroURL_pathname, pathname || '/', \"f\");\n __classPrivateFieldSet(this, _TaroURL_port, port, \"f\");\n __classPrivateFieldSet(this, _TaroURL_protocol, protocol, \"f\");\n __classPrivateFieldSet(this, _TaroURL_search, new URLSearchParams(search), \"f\");\n }\n /* public property */\n get protocol() {\n return __classPrivateFieldGet(this, _TaroURL_protocol, \"f\");\n }\n set protocol(val) {\n isString(val) && (__classPrivateFieldSet(this, _TaroURL_protocol, val.trim(), \"f\"));\n }\n get host() {\n return this.hostname + (this.port ? ':' + this.port : '');\n }\n set host(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { hostname, port } = parseUrl(`//${val}`);\n this.hostname = hostname;\n this.port = port;\n }\n }\n get hostname() {\n return __classPrivateFieldGet(this, _TaroURL_hostname, \"f\");\n }\n set hostname(val) {\n val && isString(val) && (__classPrivateFieldSet(this, _TaroURL_hostname, val.trim(), \"f\"));\n }\n get port() {\n return __classPrivateFieldGet(this, _TaroURL_port, \"f\");\n }\n set port(val) {\n isString(val) && (__classPrivateFieldSet(this, _TaroURL_port, val.trim(), \"f\"));\n }\n get pathname() {\n return __classPrivateFieldGet(this, _TaroURL_pathname, \"f\");\n }\n set pathname(val) {\n if (isString(val)) {\n val = val.trim();\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/;\n let temp = val;\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '');\n }\n if (temp)\n __classPrivateFieldSet(this, _TaroURL_pathname, '/' + temp, \"f\");\n else\n __classPrivateFieldSet(this, _TaroURL_pathname, '/', \"f\");\n }\n }\n get search() {\n const val = __classPrivateFieldGet(this, _TaroURL_search, \"f\").toString();\n return (val.length === 0 || val.startsWith('?')) ? val : `?${val}`;\n }\n set search(val) {\n if (isString(val)) {\n val = val.trim();\n __classPrivateFieldSet(this, _TaroURL_search, new URLSearchParams(val), \"f\");\n }\n }\n get hash() {\n return __classPrivateFieldGet(this, _TaroURL_hash, \"f\");\n }\n set hash(val) {\n if (isString(val)) {\n val = val.trim();\n if (val)\n __classPrivateFieldSet(this, _TaroURL_hash, val.startsWith('#') ? val : `#${val}`, \"f\");\n else\n __classPrivateFieldSet(this, _TaroURL_hash, '', \"f\");\n }\n }\n get href() {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;\n }\n set href(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.pathname = pathname;\n this.port = port;\n this.hash = hash;\n this.search = search;\n }\n }\n get origin() {\n return `${this.protocol}//${this.host}`;\n }\n set origin(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.port = port;\n }\n }\n get searchParams() {\n return __classPrivateFieldGet(this, _TaroURL_search, \"f\");\n }\n // public method\n toString() {\n return this.href;\n }\n toJSON() {\n return this.toString();\n }\n // convenient for deconstructor\n _toRaw() {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n };\n }\n}\n_TaroURL_hash = new WeakMap(), _TaroURL_hostname = new WeakMap(), _TaroURL_pathname = new WeakMap(), _TaroURL_port = new WeakMap(), _TaroURL_protocol = new WeakMap(), _TaroURL_search = new WeakMap();\nconst URL = process.env.TARO_PLATFORM === 'web' ? env.window.URL : TaroURL;\nfunction parseUrl(url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: ''\n };\n if (!url || !isString(url))\n return result;\n url = url.trim();\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const matches = url.match(PATTERN);\n if (!matches)\n return result;\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:';\n result.hostname = matches[6] || 'taro.com';\n result.port = matches[8] || '';\n result.pathname = matches[9] || '/';\n result.search = matches[10] || '';\n result.hash = matches[12] || '';\n result.href = url;\n result.origin = result.protocol + '//' + result.hostname;\n result.host = result.hostname + (result.port ? `:${result.port}` : '');\n return result;\n}\nfunction parseUrlBase(url, base) {\n const VALID_URL = /^(https?:)\\/\\//i;\n let fullUrl = '';\n let parsedBase = null;\n if (!isUndefined(base)) {\n base = String(base).trim();\n if (!VALID_URL.test(base))\n throw new TypeError(`Failed to construct 'URL': Invalid base URL`);\n parsedBase = parseUrl(base);\n }\n url = String(url).trim();\n if (VALID_URL.test(url)) {\n fullUrl = url;\n }\n else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url;\n }\n else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`);\n }\n }\n else {\n fullUrl = parsedBase.href;\n }\n }\n else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n }\n return parseUrl(fullUrl);\n}\n\nclass AnchorElement extends TaroElement {\n get href() {\n var _a;\n return (_a = this.props[\"href\" /* AnchorElementAttrs.HREF */]) !== null && _a !== void 0 ? _a : '';\n }\n set href(val) {\n this.setAttribute(\"href\" /* AnchorElementAttrs.HREF */, val);\n }\n get protocol() {\n var _a;\n return (_a = this.props[\"protocol\" /* AnchorElementAttrs.PROTOCOL */]) !== null && _a !== void 0 ? _a : '';\n }\n get host() {\n var _a;\n return (_a = this.props[\"host\" /* AnchorElementAttrs.HOST */]) !== null && _a !== void 0 ? _a : '';\n }\n get search() {\n var _a;\n return (_a = this.props[\"search\" /* AnchorElementAttrs.SEARCH */]) !== null && _a !== void 0 ? _a : '';\n }\n get hash() {\n var _a;\n return (_a = this.props[\"hash\" /* AnchorElementAttrs.HASH */]) !== null && _a !== void 0 ? _a : '';\n }\n get hostname() {\n var _a;\n return (_a = this.props[\"hostname\" /* AnchorElementAttrs.HOSTNAME */]) !== null && _a !== void 0 ? _a : '';\n }\n get port() {\n var _a;\n return (_a = this.props[\"port\" /* AnchorElementAttrs.PORT */]) !== null && _a !== void 0 ? _a : '';\n }\n get pathname() {\n var _a;\n return (_a = this.props[\"pathname\" /* AnchorElementAttrs.PATHNAME */]) !== null && _a !== void 0 ? _a : '';\n }\n setAttribute(qualifiedName, value) {\n if (qualifiedName === \"href\" /* AnchorElementAttrs.HREF */) {\n const willSetAttr = parseUrl(value);\n for (const k in willSetAttr) {\n super.setAttribute(k, willSetAttr[k]);\n }\n }\n else {\n super.setAttribute(qualifiedName, value);\n }\n }\n}\n\nclass TransferElement extends TaroElement {\n constructor(dataName) {\n super();\n this.dataName = dataName;\n this.isTransferElement = true;\n }\n get _path() {\n return this.dataName;\n }\n}\n\nclass TaroDocument extends TaroElement {\n constructor() {\n super();\n this.createEvent = createEvent;\n this.nodeType = 9 /* NodeType.DOCUMENT_NODE */;\n this.nodeName = DOCUMENT_ELEMENT_NAME;\n }\n createElement(type) {\n const nodeName = type.toLowerCase();\n let element;\n switch (true) {\n case nodeName === ROOT_STR:\n element = new TaroRootElement();\n return element;\n case controlledComponent.has(nodeName):\n element = new FormElement();\n break;\n case nodeName === A:\n element = new AnchorElement();\n break;\n case nodeName === 'page-meta':\n case nodeName === 'navigation-bar':\n element = new TransferElement(toCamelCase(nodeName));\n break;\n default:\n element = new TaroElement();\n break;\n }\n element.nodeName = nodeName;\n element.tagName = type.toUpperCase();\n return element;\n }\n // an ugly fake createElementNS to deal with @vue/runtime-dom's\n // support mounting app to svg container since vue@3.0.8\n createElementNS(_svgNS, type) {\n return this.createElement(type);\n }\n createTextNode(text) {\n return new TaroText(text);\n }\n getElementById(id) {\n const el = eventSource.get(id);\n return isUndefined(el) ? null : el;\n }\n querySelector(query) {\n // 为了 Vue3 的乞丐版实现\n if (/^#/.test(query)) {\n return this.getElementById(query.slice(1));\n }\n return null;\n }\n querySelectorAll() {\n // fake hack\n return [];\n }\n // @TODO: @PERF: 在 hydrate 移除掉空的 node\n createComment() {\n const textnode = new TaroText('');\n textnode.nodeName = COMMENT;\n return textnode;\n }\n get defaultView() {\n return env.window;\n }\n}\n\nfunction createDocument() {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument();\n const documentCreateElement = doc.createElement.bind(doc);\n const html = documentCreateElement(HTML);\n const head = documentCreateElement(HEAD);\n const body = documentCreateElement(BODY);\n const app = documentCreateElement(APP);\n app.id = APP;\n const container = documentCreateElement(CONTAINER); // 多包一层主要为了兼容 vue\n doc.appendChild(html);\n html.appendChild(head);\n html.appendChild(body);\n body.appendChild(container);\n container.appendChild(app);\n doc.documentElement = html;\n doc.head = head;\n doc.body = body;\n return doc;\n}\nconst document$1 = process.env.TARO_PLATFORM === 'web' ? env.document : (env.document = createDocument());\n\nconst getComputedStyle = process.env.TARO_PLATFORM === 'web' ? env.window.getComputedStyle : function (element) {\n return element.style;\n};\n\nconst eventCenter = hooks.call('getEventCenter', Events);\n\n/**\n * 一个小型缓存池,用于在切换页面时,存储一些上下文信息\n */\nclass RuntimeCache {\n constructor(name) {\n this.cache = new Map();\n this.name = name;\n }\n has(identifier) {\n return this.cache.has(identifier);\n }\n set(identifier, ctx) {\n if (identifier && ctx) {\n this.cache.set(identifier, ctx);\n }\n }\n get(identifier) {\n if (this.has(identifier))\n return this.cache.get(identifier);\n }\n delete(identifier) {\n this.cache.delete(identifier);\n }\n}\n\nvar _TaroHistory_instances, _TaroHistory_location, _TaroHistory_stack, _TaroHistory_cur, _TaroHistory_window, _TaroHistory_reset;\nconst cache$1 = new RuntimeCache('history');\nclass TaroHistory extends Events {\n constructor(location, options) {\n super();\n _TaroHistory_instances.add(this);\n /* private property */\n _TaroHistory_location.set(this, void 0);\n _TaroHistory_stack.set(this, []);\n _TaroHistory_cur.set(this, 0);\n _TaroHistory_window.set(this, void 0);\n __classPrivateFieldSet(this, _TaroHistory_window, options.window, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_location, location, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").on('__record_history__', (href) => {\n var _a;\n __classPrivateFieldSet(this, _TaroHistory_cur, (_a = __classPrivateFieldGet(this, _TaroHistory_cur, \"f\"), _a++, _a), \"f\");\n __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, \"f\")), \"f\");\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").push({\n state: null,\n title: '',\n url: href\n });\n }, null);\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").on('__reset_history__', (href) => {\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this, href);\n }, null);\n // 切换上下文行为\n this.on(CONTEXT_ACTIONS.INIT, () => {\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n cache$1.set(pageId, {\n location: __classPrivateFieldGet(this, _TaroHistory_location, \"f\"),\n stack: __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(),\n cur: __classPrivateFieldGet(this, _TaroHistory_cur, \"f\")\n });\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n if (cache$1.has(pageId)) {\n const ctx = cache$1.get(pageId);\n __classPrivateFieldSet(this, _TaroHistory_location, ctx.location, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_stack, ctx.stack, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_cur, ctx.cur, \"f\");\n }\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n cache$1.delete(pageId);\n }, null);\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this);\n }\n /* public property */\n get length() {\n return __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").length;\n }\n get state() {\n return __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")].state;\n }\n /* public method */\n go(delta) {\n if (!isNumber(delta) || isNaN(delta))\n return;\n let targetIdx = __classPrivateFieldGet(this, _TaroHistory_cur, \"f\") + delta;\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);\n __classPrivateFieldSet(this, _TaroHistory_cur, targetIdx, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")].url);\n __classPrivateFieldGet(this, _TaroHistory_window, \"f\").trigger('popstate', __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")]);\n }\n back() {\n this.go(-1);\n }\n forward() {\n this.go(1);\n }\n pushState(state, title, url) {\n if (!url || !isString(url))\n return;\n __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, \"f\") + 1), \"f\");\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").push({\n state,\n title,\n url\n });\n __classPrivateFieldSet(this, _TaroHistory_cur, this.length - 1, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', url);\n }\n replaceState(state, title, url) {\n if (!url || !isString(url))\n return;\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")] = {\n state,\n title,\n url\n };\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', url);\n }\n // For debug\n get cache() {\n return cache$1;\n }\n}\n_TaroHistory_location = new WeakMap(), _TaroHistory_stack = new WeakMap(), _TaroHistory_cur = new WeakMap(), _TaroHistory_window = new WeakMap(), _TaroHistory_instances = new WeakSet(), _TaroHistory_reset = function _TaroHistory_reset(href = '') {\n __classPrivateFieldSet(this, _TaroHistory_stack, [\n {\n state: null,\n title: '',\n url: href || __classPrivateFieldGet(this, _TaroHistory_location, \"f\").href\n }\n ], \"f\");\n __classPrivateFieldSet(this, _TaroHistory_cur, 0, \"f\");\n};\nconst History = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory;\n\nconst Current = {\n app: null,\n router: null,\n page: null\n};\nconst getCurrentInstance = () => Current;\n\nvar _TaroLocation_instances, _TaroLocation_url, _TaroLocation_noCheckUrl, _TaroLocation_window, _TaroLocation_reset, _TaroLocation_getPreValue, _TaroLocation_rollBack, _TaroLocation_recordHistory, _TaroLocation_checkUrlChange;\nconst INIT_URL = 'https://taro.com';\nconst cache = new RuntimeCache('location');\nclass TaroLocation extends Events {\n constructor(options) {\n super();\n _TaroLocation_instances.add(this);\n /* private property */\n _TaroLocation_url.set(this, new URL(INIT_URL));\n _TaroLocation_noCheckUrl.set(this, false);\n _TaroLocation_window.set(this, void 0);\n __classPrivateFieldSet(this, _TaroLocation_window, options.window, \"f\");\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_reset).call(this);\n this.on('__set_href_without_history__', (href) => {\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, \"f\");\n const lastHash = __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash;\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = generateFullUrl(href);\n if (lastHash !== __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash) {\n __classPrivateFieldGet(this, _TaroLocation_window, \"f\").trigger('hashchange');\n }\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, \"f\");\n }, null);\n // 切换上下文行为\n this.on(CONTEXT_ACTIONS.INIT, () => {\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_reset).call(this);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n cache.set(pageId, {\n lastHref: this.href,\n });\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId);\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, \"f\");\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = ctx.lastHref;\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, \"f\");\n }\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n cache.delete(pageId);\n }, null);\n }\n /* public property */\n get protocol() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").protocol;\n }\n set protocol(val) {\n const REG = /^(http|https):$/i;\n if (!val || !isString(val) || !REG.test(val.trim()))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").protocol = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get host() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").host;\n }\n set host(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").host = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get hostname() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hostname;\n }\n set hostname(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hostname = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get port() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").port;\n }\n set port(val) {\n const xVal = Number((val = val.trim()));\n if (!isNumber(xVal) || xVal <= 0)\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").port = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get pathname() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").pathname;\n }\n set pathname(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").pathname = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get search() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").search;\n }\n set search(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n val = val.startsWith('?') ? val : `?${val}`;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").search = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get hash() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash;\n }\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n val = val.startsWith('#') ? val : `#${val}`;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get href() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href;\n }\n set href(val) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim())))\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get origin() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").origin;\n }\n set origin(val) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim())))\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").origin = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n /* public method */\n assign() {\n warn(true, '小程序环境中调用location.assign()无效.');\n }\n reload() {\n warn(true, '小程序环境中调用location.reload()无效.');\n }\n replace(url) {\n this.trigger('__set_href_without_history__', url);\n }\n toString() {\n return this.href;\n }\n // For debug\n get cache() {\n return cache;\n }\n}\n_TaroLocation_url = new WeakMap(), _TaroLocation_noCheckUrl = new WeakMap(), _TaroLocation_window = new WeakMap(), _TaroLocation_instances = new WeakSet(), _TaroLocation_reset = function _TaroLocation_reset() {\n const Current = getCurrentInstance();\n const router = Current.router;\n if (router) {\n const { path, params } = router;\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`;\n });\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;\n __classPrivateFieldSet(this, _TaroLocation_url, new URL(url), \"f\");\n this.trigger('__reset_history__', this.href);\n }\n}, _TaroLocation_getPreValue = function _TaroLocation_getPreValue() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\")._toRaw();\n}, _TaroLocation_rollBack = function _TaroLocation_rollBack(href) {\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = href;\n}, _TaroLocation_recordHistory = function _TaroLocation_recordHistory() {\n this.trigger('__record_history__', this.href);\n}, _TaroLocation_checkUrlChange = function _TaroLocation_checkUrlChange(preValue) {\n if (__classPrivateFieldGet(this, _TaroLocation_noCheckUrl, \"f\")) {\n return false;\n }\n const { protocol, hostname, port, pathname, search, hash } = __classPrivateFieldGet(this, _TaroLocation_url, \"f\")._toRaw();\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_rollBack).call(this, preValue.href);\n return false;\n }\n // pathname\n if (pathname !== preValue.pathname) {\n return true;\n }\n // search\n if (search !== preValue.search) {\n return true;\n }\n // hashchange\n if (hash !== preValue.hash) {\n __classPrivateFieldGet(this, _TaroLocation_window, \"f\").trigger('hashchange');\n return true;\n }\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_rollBack).call(this, preValue.href);\n return false;\n};\nconst Location = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation;\nfunction generateFullUrl(val = '') {\n const origin = INIT_URL;\n if (/^[/?#]/.test(val)) {\n return origin + val;\n }\n return val;\n}\n\nconst machine = 'Macintosh';\nconst arch = 'Intel Mac OS X 10_14_5';\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';\nconst msg = '(' + machine + '; ' + arch + ') ' + engine;\nconst nav = process.env.TARO_PLATFORM === 'web' ? env.window.navigator : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: ''\n};\n\n// https://github.com/myrne/performance-now\nlet now;\n(function () {\n let loadTime;\n if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n now = () => performance.now();\n }\n else if (Date.now) {\n loadTime = Date.now();\n now = () => Date.now() - loadTime;\n }\n else {\n loadTime = new Date().getTime();\n now = () => new Date().getTime() - loadTime;\n }\n})();\nlet lastTime = 0;\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame !== null ? requestAnimationFrame : function (callback) {\n const _now = now();\n const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () { callback(lastTime = nextTime); }, nextTime - _now);\n};\nconst _caf = typeof cancelAnimationFrame !== 'undefined' && cancelAnimationFrame !== null\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed);\n };\n\nclass TaroWindow extends Events {\n constructor() {\n super();\n this.navigator = nav;\n this.requestAnimationFrame = _raf;\n this.cancelAnimationFrame = _caf;\n this.getComputedStyle = getComputedStyle;\n const globalProperties = [\n ...Object.getOwnPropertyNames(global || {}),\n ...Object.getOwnPropertySymbols(global || {})\n ];\n globalProperties.forEach(property => {\n if (property === 'atob' || property === 'document')\n return;\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // 防止小程序环境下,window 上的某些 get 属性在赋值时报错\n try {\n this[property] = global[property];\n }\n catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`);\n }\n }\n }\n });\n this.Date || (this.Date = Date);\n // 应用启动时,提供给需要读取历史信息的库使用\n this.location = new Location({ window: this });\n // @ts-ignore\n this.history = new History(this.location, { window: this });\n this.initEvent();\n }\n initEvent() {\n const _location = this.location;\n const _history = this.history;\n this.on(CONTEXT_ACTIONS.INIT, (pageId) => {\n // 页面onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n // 页面onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n // 页面onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n // 页面onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n _history.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n }, null);\n }\n get document() {\n return env.document;\n }\n addEventListener(event, callback) {\n if (!isString(event))\n return;\n this.on(event, callback, null);\n }\n removeEventListener(event, callback) {\n if (!isString(event))\n return;\n this.off(event, callback, null);\n }\n setTimeout(...args) {\n return setTimeout(...args);\n }\n clearTimeout(...args) {\n return clearTimeout(...args);\n }\n}\nconst window$1 = process.env.TARO_PLATFORM === 'web' ? env.window : (env.window = new TaroWindow());\nconst location = window$1.location;\nconst history = window$1.history;\n\n// for Vue3\nclass SVGElement extends TaroElement {\n}\n\n// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nconst addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nconst hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nconst stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nconst stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nconst stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nconst getHomePage = (path = '', basename = '', customRoutes = {}, entryPagePath = '') => {\n var _a;\n const routePath = addLeadingSlash(stripBasename(path, basename));\n const alias = ((_a = Object.entries(customRoutes).find(([key]) => key === routePath)) === null || _a === void 0 ? void 0 : _a[1]) || routePath;\n return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename;\n};\nconst getCurrentPage = (routerMode = 'hash', basename = '/') => {\n const pagePath = routerMode === 'hash'\n ? location.hash.slice(1).split('?')[0]\n : location.pathname;\n return addLeadingSlash(stripBasename(pagePath, basename));\n};\n\n/* eslint-disable dot-notation */\nconst instances = new Map();\nconst pageId = incrementId();\nfunction injectPageInstance(inst, id) {\n hooks.call('mergePageInstance', instances.get(id), inst);\n instances.set(id, inst);\n}\nfunction getPageInstance(id) {\n return instances.get(id);\n}\nfunction removePageInstance(id) {\n instances.delete(id);\n}\nfunction safeExecute(path, lifecycle, ...args) {\n const instance = instances.get(path);\n if (instance == null) {\n return;\n }\n const func = hooks.call('getLifecycle', instance, lifecycle);\n if (isArray(func)) {\n const res = func.map(fn => fn.apply(instance, args));\n return res[0];\n }\n if (!isFunction(func)) {\n return;\n }\n return func.apply(instance, args);\n}\nfunction stringify(obj) {\n if (obj == null) {\n return '';\n }\n const path = Object.keys(obj).map((key) => {\n return key + '=' + obj[key];\n }).join('&');\n return path === '' ? path : '?' + path;\n}\nfunction getPath(id, options) {\n const idx = id.indexOf('?');\n if (process.env.TARO_PLATFORM === 'web') {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify((options === null || options === void 0 ? void 0 : options.stamp) ? { stamp: options.stamp } : {})}`;\n }\n else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;\n }\n}\nfunction getOnReadyEventKey(path) {\n return path + '.' + ON_READY;\n}\nfunction getOnShowEventKey(path) {\n return path + '.' + ON_SHOW;\n}\nfunction getOnHideEventKey(path) {\n return path + '.' + ON_HIDE;\n}\nfunction createPageConfig(component, pageName, data, pageConfig) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName !== null && pageName !== void 0 ? pageName : `taro_page_${pageId()}`;\n const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES,] = hooks.call('getMiniLifecycleImpl').page;\n let pageElement = null;\n let unmounting = false;\n let prepareMountList = [];\n function setCurrentRouter(page) {\n const router = process.env.TARO_PLATFORM === 'web' ? page.$taroPath : page.route || page.__route__ || page.$taroPath;\n Current.router = {\n params: page.$taroParams,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id)\n };\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState;\n }\n }\n let loadResolver;\n let hasLoaded;\n const config = {\n [ONLOAD](options = {}, cb) {\n hasLoaded = new Promise(resolve => { loadResolver = resolve; });\n perf.start(PAGE_INIT);\n Current.page = this;\n this.config = pageConfig || {};\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });\n const $taroPath = this.$taroPath = getPath(id, uniqueOptions);\n if (process.env.TARO_PLATFORM === 'web') {\n config.path = $taroPath;\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions;\n }\n setCurrentRouter(this);\n // 初始化当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.INIT, $taroPath);\n }\n const mount = () => {\n Current.app.mount(component, $taroPath, () => {\n pageElement = env.document.getElementById($taroPath);\n ensure(pageElement !== null, '没有找到页面实例。');\n safeExecute($taroPath, ON_LOAD, this.$taroParams);\n loadResolver();\n if (process.env.TARO_PLATFORM !== 'web') {\n pageElement.ctx = this;\n pageElement.performUpdate(true, cb);\n }\n else {\n isFunction(cb) && cb();\n }\n });\n };\n if (unmounting) {\n prepareMountList.push(mount);\n }\n else {\n mount();\n }\n },\n [ONUNLOAD]() {\n const $taroPath = this.$taroPath;\n // 销毁当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath);\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD);\n unmounting = true;\n Current.app.unmount($taroPath, () => {\n unmounting = false;\n instances.delete($taroPath);\n if (pageElement) {\n pageElement.ctx = null;\n pageElement = null;\n }\n if (prepareMountList.length) {\n prepareMountList.forEach(fn => fn());\n prepareMountList = [];\n }\n });\n },\n [ONREADY]() {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY);\n // 通过事件触发子组件的生命周期\n _raf(() => eventCenter.trigger(getOnReadyEventKey(id)));\n this.onReady.called = true;\n });\n },\n [ONSHOW](options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this;\n setCurrentRouter(this);\n // 恢复上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options);\n // 通过事件触发子组件的生命周期\n _raf(() => eventCenter.trigger(getOnShowEventKey(id)));\n });\n },\n [ONHIDE]() {\n // 缓存当前页面上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null;\n Current.router = null;\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE);\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id));\n }\n };\n if (process.env.TARO_PLATFORM === 'web') {\n config.getOpenerEventChannel = () => {\n return EventChannel.pageChannel;\n };\n }\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false;\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true;\n return '';\n });\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);\n if (isDefer) {\n hasLoaded.then(exec);\n }\n else {\n return exec();\n }\n };\n });\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n var _a;\n if (component[lifecycle] ||\n ((_a = component.prototype) === null || _a === void 0 ? void 0 : _a[lifecycle]) ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig[lifecycle.replace(/^on/, 'enable')])) {\n config[lifecycle] = function (...args) {\n var _a;\n const target = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.target;\n if (target === null || target === void 0 ? void 0 : target.id) {\n const id = target.id;\n const element = env.document.getElementById(id);\n if (element) {\n target.dataset = element.dataset;\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args);\n };\n }\n });\n config.eh = eventHandler;\n if (!isUndefined(data)) {\n config.data = data;\n }\n hooks.call('modifyPageObject', config);\n return config;\n}\nfunction createComponentConfig(component, componentName, data) {\n const id = componentName !== null && componentName !== void 0 ? componentName : `taro_component_${pageId()}`;\n let componentElement = null;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n const config = {\n [ATTACHED]() {\n var _a;\n perf.start(PAGE_INIT);\n this.pageIdCache = ((_a = this.getPageId) === null || _a === void 0 ? void 0 : _a.call(this)) || pageId();\n const path = getPath(id, { id: this.pageIdCache });\n Current.app.mount(component, path, () => {\n componentElement = env.document.getElementById(path);\n ensure(componentElement !== null, '没有找到组件实例。');\n this.$taroInstances = instances.get(path);\n safeExecute(path, ON_LOAD);\n if (process.env.TARO_PLATFORM !== 'web') {\n componentElement.ctx = this;\n componentElement.performUpdate(true);\n }\n });\n },\n [DETACHED]() {\n const path = getPath(id, { id: this.pageIdCache });\n Current.app.unmount(path, () => {\n instances.delete(path);\n if (componentElement) {\n componentElement.ctx = null;\n }\n });\n },\n methods: {\n eh: eventHandler\n }\n };\n if (!isUndefined(data)) {\n config.data = data;\n }\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n var _a;\n config[key] = (_a = component[key]) !== null && _a !== void 0 ? _a : EMPTY_OBJ;\n });\n return config;\n}\nfunction createRecursiveComponentConfig(componentName) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED]() {\n var _a, _b;\n const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = this;\n }\n }\n },\n [DETACHED]() {\n var _a, _b;\n const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n if (isString(componentId)) {\n customWrapperCache.delete(componentId);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = null;\n }\n }\n }\n }\n : EMPTY_OBJ;\n return hooks.call('modifyRecursiveComponentConfig', Object.assign({ properties: {\n i: {\n type: Object,\n value: {\n [\"nn\" /* Shortcuts.NodeName */]: getComponentsAlias$1(internalComponents)[VIEW]._num\n }\n },\n l: {\n type: String,\n value: ''\n }\n }, options: {\n addGlobalClass: true,\n virtualHost: !isCustomWrapper\n }, methods: {\n eh: eventHandler\n } }, lifeCycles), { isCustomWrapper });\n}\n\nconst TIMEOUT = 100;\nconst nextTick = (cb, ctx) => {\n const beginTime = Date.now();\n const router = Current.router;\n const timerFunc = () => {\n setTimeout(function () {\n ctx ? cb.call(ctx) : cb();\n }, 1);\n };\n if (router === null)\n return timerFunc();\n const path = router.$taroPath;\n /**\n * 三种情况\n * 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms\n * 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车\n * 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。\n */\n function next() {\n var _a, _b, _c;\n const pageElement = env.document.getElementById(path);\n if (pageElement === null || pageElement === void 0 ? void 0 : pageElement.pendingUpdate) {\n if (process.env.TARO_PLATFORM === 'web') {\n // eslint-disable-next-line dot-notation\n (_c = (_b = (_a = pageElement.firstChild) === null || _a === void 0 ? void 0 : _a['componentOnReady']) === null || _b === void 0 ? void 0 : _b.call(_a).then(() => {\n timerFunc();\n })) !== null && _c !== void 0 ? _c : timerFunc();\n }\n else {\n pageElement.enqueueUpdateCallback(cb, ctx);\n }\n }\n else if (Date.now() - beginTime > TIMEOUT) {\n timerFunc();\n }\n else {\n setTimeout(() => next(), 20);\n }\n }\n next();\n};\n\nfunction handleArrayFindPolyfill() {\n if (!isFunction(Array.prototype.find)) {\n Object.defineProperty(Array.prototype, 'find', {\n value(predicate) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n const o = Object(this);\n const len = o.length >>> 0;\n if (!isFunction(predicate)) {\n throw new TypeError('predicate must be a function');\n }\n const thisArg = arguments[1];\n let k = 0;\n while (k < len) {\n const kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n k++;\n }\n return undefined;\n }\n });\n }\n}\nfunction handleArrayIncludesPolyfill() {\n if (!isFunction(Array.prototype.includes)) {\n Object.defineProperty(Array.prototype, 'includes', {\n value(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n const o = Object(this);\n const len = o.length >>> 0;\n if (len === 0) {\n return false;\n }\n const n = fromIndex | 0;\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n while (k < len) {\n if (o[k] === searchElement) {\n return true;\n }\n k++;\n }\n return false;\n }\n });\n }\n}\n\n/* eslint-disable eqeqeq */\nfunction handleIntersectionObserverPolyfill() {\n // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n }\n else {\n handleIntersectionObserverObjectPolyfill();\n }\n}\nfunction handleIntersectionObserverObjectPolyfill() {\n const document = window.document;\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n // Calculates the intersection ratio.\n const targetRect = this.boundingClientRect;\n const targetArea = targetRect.width * targetRect.height;\n const intersectionRect = this.intersectionRect;\n const intersectionArea = intersectionRect.width * intersectionRect.height;\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n }\n else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, options = {}) {\n if (!isFunction(callback)) {\n throw new Error('callback must be a function');\n }\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n const isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n if (isTargetAlreadyObserved)\n return;\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n this._registerInstance();\n this._observationTargets.push({ element: target, entry: null });\n this._monitorIntersections();\n this._checkForIntersections();\n };\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets =\n this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n };\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n };\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n const records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n let threshold = opt_threshold || [0];\n if (!Array.isArray(threshold))\n threshold = [threshold];\n return threshold.sort().filter(function (t, i, a) {\n if (!isNumber(t) || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n };\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n const marginString = opt_rootMargin || '0px';\n const margins = marginString.split(/\\s+/).map(function (margin) {\n const parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return { value: parseFloat(parts[1]), unit: parts[2] };\n });\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\n };\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n };\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n const rootIsInDom = this._rootIsInDom();\n const rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n this._observationTargets.forEach(function (item) {\n const target = item.element;\n const targetRect = getBoundingClientRect(target);\n const rootContainsTarget = this._rootContainsTarget(target);\n const oldEntry = item.entry;\n const intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n const newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect,\n intersectionRatio: -1,\n isIntersecting: false,\n });\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n }\n else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n }\n else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display === 'none')\n return;\n const targetRect = getBoundingClientRect(target);\n let intersectionRect = targetRect;\n let parent = getParentNode(target);\n let atRoot = false;\n while (!atRoot) {\n let parentRect = null;\n const parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display === 'none')\n return;\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n }\n else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect)\n break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n };\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n let rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n }\n else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n const html = document.documentElement;\n const body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n };\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n const margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit === 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n const newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n return newRect;\n };\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold =\n function (oldEntry, newEntry) {\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n const oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n const newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n // Ignore unchanged ratios\n if (oldRatio === newRatio)\n return;\n for (let i = 0; i < this.thresholds.length; i++) {\n const threshold = this.thresholds[i];\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n };\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n };\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n if (isFunction(node.addEventListener)) {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (isFunction(node.attachEvent)) {\n node.attachEvent('on' + event, fn);\n }\n }\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (isFunction(node.removeEventListener)) {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (isFunction(node.detatchEvent)) {\n node.detatchEvent('on' + event, fn);\n }\n }\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n const top = Math.max(rect1.top, rect2.top);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n const left = Math.max(rect1.left, rect2.left);\n const right = Math.min(rect1.right, rect2.right);\n const width = right - left;\n const height = bottom - top;\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n let rect;\n try {\n rect = el.getBoundingClientRect();\n }\n catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n if (!rect)\n return getEmptyRect();\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n /**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n let node = child;\n while (node) {\n if (node == parent)\n return true;\n node = getParentNode(node);\n }\n return false;\n }\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n const parent = node.parentNode;\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a <slot>, return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n return parent;\n }\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n}\n\nfunction handleObjectAssignPolyfill() {\n if (!isFunction(Object.assign)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.assign = function (target) {\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n const to = Object(target);\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index];\n if (nextSource != null) { // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction handleObjectEntriesPolyfill() {\n if (!isFunction(Object.entries)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.entries = function (obj) {\n if (obj == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n const to = [];\n if (obj != null) { // Skip over if undefined or null\n for (const key in obj) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n to.push([key, obj[key]]);\n }\n }\n }\n return to;\n };\n }\n}\nfunction handleObjectDefinePropertyPolyfill() {\n if (!isFunction(Object.defineProperties)) {\n Object.defineProperties = function (obj, properties) {\n function convertToDescriptor(desc) {\n function hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n if (!isObject(desc)) {\n throw new TypeError('bad desc');\n }\n const d = {};\n if (hasProperty(desc, 'enumerable'))\n d.enumerable = !!desc.enumerable;\n if (hasProperty(desc, 'configurable')) {\n d.configurable = !!desc.configurable;\n }\n if (hasProperty(desc, 'value'))\n d.value = desc.value;\n if (hasProperty(desc, 'writable'))\n d.writable = !!desc.writable;\n if (hasProperty(desc, 'get')) {\n const g = desc.get;\n if (!isFunction(g) && !isUndefined(g)) {\n throw new TypeError('bad get');\n }\n d.get = g;\n }\n if (hasProperty(desc, 'set')) {\n const s = desc.set;\n if (!isFunction(s) && !isUndefined(s)) {\n throw new TypeError('bad set');\n }\n d.set = s;\n }\n if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) {\n throw new TypeError('identity-confused descriptor');\n }\n return d;\n }\n if (!isObject(obj))\n throw new TypeError('bad obj');\n properties = Object(properties);\n const keys = Object.keys(properties);\n const descs = [];\n for (let i = 0; i < keys.length; i++) {\n descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);\n }\n for (let i = 0; i < descs.length; i++) {\n Object.defineProperty(obj, descs[i][0], descs[i][1]);\n }\n return obj;\n };\n }\n}\n\nfunction handlePolyfill() {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.assign') {\n handleObjectAssignPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.entries') {\n handleObjectEntriesPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.defineProperty') {\n handleObjectDefinePropertyPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.find') {\n handleArrayFindPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.includes') {\n handleArrayIncludesPolyfill();\n }\n // Exit early if we're not running in a browser.\n if (process.env.TARO_PLATFORM === 'web' && isObject(window)) {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'IntersectionObserver') {\n handleIntersectionObserverPolyfill();\n }\n }\n}\nif (process.env.SUPPORT_TARO_POLYFILL !== 'disabled' && process.env.TARO_PLATFORM !== 'web') {\n handlePolyfill();\n}\n\nexport { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, Current, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, FormElement, HEAD, HOOKS_APP_ID, HTML, History, ID, INPUT, KEY_CODE, Location, MutationObserver$1 as MutationObserver, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, SVGElement, Style, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, TaroElement, TaroEvent, TaroNode, TaroRootElement, TaroText, UID, URL, URLSearchParams, VALUE, VIEW, addLeadingSlash, _caf as cancelAnimationFrame, createComponentConfig, createEvent, createPageConfig, createRecursiveComponentConfig, document$1 as document, env, eventCenter, eventHandler, eventSource, getComputedStyle, getCurrentInstance, getCurrentPage, getHomePage, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, handlePolyfill, hasBasename, history, hydrate, incrementId, injectPageInstance, isHasExtractProp, location, nav as navigator, nextTick, now, options, parseUrl, removePageInstance, _raf as requestAnimationFrame, safeExecute, stringify, stripBasename, stripSuffix, stripTrailing, window$1 as window };\n//# sourceMappingURL=runtime.esm.js.map\n","'use strict';\n\nconst DEFAULT_EMPTY_ARRAY = '[]';\nconst NO_DEFAULT_VALUE = '';\nconst DEFAULT_TRUE = '!0';\nconst DEFAULT_FALSE = '!1';\nconst touchEvents = {\n bindTouchStart: NO_DEFAULT_VALUE,\n bindTouchMove: NO_DEFAULT_VALUE,\n bindTouchEnd: NO_DEFAULT_VALUE,\n bindTouchCancel: NO_DEFAULT_VALUE,\n bindLongTap: NO_DEFAULT_VALUE\n};\nconst animation = {\n animation: NO_DEFAULT_VALUE,\n bindAnimationStart: NO_DEFAULT_VALUE,\n bindAnimationIteration: NO_DEFAULT_VALUE,\n bindAnimationEnd: NO_DEFAULT_VALUE,\n bindTransitionEnd: NO_DEFAULT_VALUE\n};\nfunction singleQuote(s) {\n return `'${s}'`;\n}\nconst View = Object.assign(Object.assign({ 'hover-class': singleQuote('none'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '50', 'hover-stay-time': '400' }, touchEvents), animation);\nconst Icon = {\n type: NO_DEFAULT_VALUE,\n size: '23',\n color: NO_DEFAULT_VALUE\n};\nconst MapComp = Object.assign({ longitude: NO_DEFAULT_VALUE, latitude: NO_DEFAULT_VALUE, scale: '16', markers: DEFAULT_EMPTY_ARRAY, covers: NO_DEFAULT_VALUE, polyline: DEFAULT_EMPTY_ARRAY, circles: DEFAULT_EMPTY_ARRAY, controls: DEFAULT_EMPTY_ARRAY, 'include-points': DEFAULT_EMPTY_ARRAY, 'show-location': NO_DEFAULT_VALUE, 'layer-style': '1', bindMarkerTap: NO_DEFAULT_VALUE, bindControlTap: NO_DEFAULT_VALUE, bindCalloutTap: NO_DEFAULT_VALUE, bindUpdated: NO_DEFAULT_VALUE }, touchEvents);\nconst Progress = {\n percent: NO_DEFAULT_VALUE,\n 'stroke-width': '6',\n color: singleQuote('#09BB07'),\n activeColor: singleQuote('#09BB07'),\n backgroundColor: singleQuote('#EBEBEB'),\n active: DEFAULT_FALSE,\n 'active-mode': singleQuote('backwards'),\n 'show-info': DEFAULT_FALSE\n};\nconst RichText = {\n nodes: DEFAULT_EMPTY_ARRAY\n};\nconst Text = Object.assign({ selectable: DEFAULT_FALSE, space: NO_DEFAULT_VALUE, decode: DEFAULT_FALSE }, touchEvents);\nconst Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE, bindagreeprivacyauthorization: NO_DEFAULT_VALUE }, touchEvents);\nconst Checkbox = {\n value: NO_DEFAULT_VALUE,\n disabled: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst CheckboxGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Form = {\n 'report-submit': DEFAULT_FALSE,\n bindSubmit: NO_DEFAULT_VALUE,\n bindReset: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Input = {\n value: NO_DEFAULT_VALUE,\n type: singleQuote(NO_DEFAULT_VALUE),\n password: DEFAULT_FALSE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('input-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'cursor-spacing': '0',\n focus: DEFAULT_FALSE,\n 'confirm-type': singleQuote('done'),\n 'confirm-hold': DEFAULT_FALSE,\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindInput: NO_DEFAULT_VALUE,\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Label = Object.assign({ for: NO_DEFAULT_VALUE, name: NO_DEFAULT_VALUE }, touchEvents);\nconst Picker = {\n mode: singleQuote('selector'),\n disabled: NO_DEFAULT_VALUE,\n range: NO_DEFAULT_VALUE,\n 'range-key': NO_DEFAULT_VALUE,\n value: NO_DEFAULT_VALUE,\n start: NO_DEFAULT_VALUE,\n end: NO_DEFAULT_VALUE,\n fields: singleQuote('day'),\n 'custom-item': NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n bindCancel: NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n bindColumnChange: NO_DEFAULT_VALUE\n};\nconst PickerView = {\n value: NO_DEFAULT_VALUE,\n 'indicator-style': NO_DEFAULT_VALUE,\n 'indicator-class': NO_DEFAULT_VALUE,\n 'mask-style': NO_DEFAULT_VALUE,\n 'mask-class': NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst PickerViewColumn = {\n name: NO_DEFAULT_VALUE\n};\nconst Radio = {\n value: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst RadioGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Slider = {\n min: '0',\n max: '100',\n step: '1',\n disabled: NO_DEFAULT_VALUE,\n value: '0',\n activeColor: singleQuote('#1aad19'),\n backgroundColor: singleQuote('#e9e9e9'),\n 'block-size': '28',\n 'block-color': singleQuote('#ffffff'),\n 'show-value': DEFAULT_FALSE,\n bindChange: NO_DEFAULT_VALUE,\n bindChanging: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Switch = {\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n type: singleQuote('switch'),\n color: singleQuote('#04BE02'),\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Textarea = {\n value: NO_DEFAULT_VALUE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('textarea-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'auto-focus': DEFAULT_FALSE,\n focus: DEFAULT_FALSE,\n 'auto-height': DEFAULT_FALSE,\n fixed: DEFAULT_FALSE,\n 'cursor-spacing': '0',\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindLineChange: NO_DEFAULT_VALUE,\n bindInput: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst CoverImage = {\n src: NO_DEFAULT_VALUE,\n bindLoad: 'eh',\n bindError: 'eh'\n};\nconst CoverView = Object.assign({ 'scroll-top': DEFAULT_FALSE }, touchEvents);\nconst MovableArea = {\n 'scale-area': DEFAULT_FALSE\n};\nconst MovableView = Object.assign(Object.assign({ direction: 'none', inertia: DEFAULT_FALSE, 'out-of-bounds': DEFAULT_FALSE, x: NO_DEFAULT_VALUE, y: NO_DEFAULT_VALUE, damping: '20', friction: '2', disabled: NO_DEFAULT_VALUE, scale: DEFAULT_FALSE, 'scale-min': '0.5', 'scale-max': '10', 'scale-value': '1', bindChange: NO_DEFAULT_VALUE, bindScale: NO_DEFAULT_VALUE, bindHTouchMove: NO_DEFAULT_VALUE, bindVTouchMove: NO_DEFAULT_VALUE, width: singleQuote('10px'), height: singleQuote('10px') }, touchEvents), animation);\nconst ScrollView = Object.assign(Object.assign({ 'scroll-x': DEFAULT_FALSE, 'scroll-y': DEFAULT_FALSE, 'upper-threshold': '50', 'lower-threshold': '50', 'scroll-top': NO_DEFAULT_VALUE, 'scroll-left': NO_DEFAULT_VALUE, 'scroll-into-view': NO_DEFAULT_VALUE, 'scroll-with-animation': DEFAULT_FALSE, 'enable-back-to-top': DEFAULT_FALSE, bindScrollToUpper: NO_DEFAULT_VALUE, bindScrollToLower: NO_DEFAULT_VALUE, bindScroll: NO_DEFAULT_VALUE }, touchEvents), animation);\nconst Swiper = Object.assign({ 'indicator-dots': DEFAULT_FALSE, 'indicator-color': singleQuote('rgba(0, 0, 0, .3)'), 'indicator-active-color': singleQuote('#000000'), autoplay: DEFAULT_FALSE, current: '0', interval: '5000', duration: '500', circular: DEFAULT_FALSE, vertical: DEFAULT_FALSE, 'previous-margin': singleQuote('0px'), 'next-margin': singleQuote('0px'), 'display-multiple-items': '1', bindChange: NO_DEFAULT_VALUE, bindTransition: NO_DEFAULT_VALUE, bindAnimationFinish: NO_DEFAULT_VALUE }, touchEvents);\nconst SwiperItem = {\n 'item-id': NO_DEFAULT_VALUE\n};\nconst Navigator = {\n url: NO_DEFAULT_VALUE,\n 'open-type': singleQuote('navigate'),\n delta: '1',\n 'hover-class': singleQuote('navigator-hover'),\n 'hover-stop-propagation': DEFAULT_FALSE,\n 'hover-start-time': '50',\n 'hover-stay-time': '600',\n bindSuccess: NO_DEFAULT_VALUE,\n bindFail: NO_DEFAULT_VALUE,\n bindComplete: NO_DEFAULT_VALUE\n};\nconst Audio = {\n id: NO_DEFAULT_VALUE,\n src: NO_DEFAULT_VALUE,\n loop: DEFAULT_FALSE,\n controls: DEFAULT_FALSE,\n poster: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n author: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindPlay: NO_DEFAULT_VALUE,\n bindPause: NO_DEFAULT_VALUE,\n bindTimeUpdate: NO_DEFAULT_VALUE,\n bindEnded: NO_DEFAULT_VALUE\n};\nconst Camera = {\n 'device-position': singleQuote('back'),\n flash: singleQuote('auto'),\n bindStop: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Image = Object.assign({ src: NO_DEFAULT_VALUE, mode: singleQuote('scaleToFill'), 'lazy-load': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE, bindLoad: NO_DEFAULT_VALUE }, touchEvents);\nconst LivePlayer = Object.assign({ src: NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, muted: DEFAULT_FALSE, orientation: singleQuote('vertical'), 'object-fit': singleQuote('contain'), 'background-mute': DEFAULT_FALSE, 'min-cache': '1', 'max-cache': '3', bindStateChange: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindNetStatus: NO_DEFAULT_VALUE }, animation);\nconst Video = Object.assign({ src: NO_DEFAULT_VALUE, duration: NO_DEFAULT_VALUE, controls: DEFAULT_TRUE, 'danmu-list': NO_DEFAULT_VALUE, 'danmu-btn': NO_DEFAULT_VALUE, 'enable-danmu': NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, loop: DEFAULT_FALSE, muted: DEFAULT_FALSE, 'initial-time': '0', 'page-gesture': DEFAULT_FALSE, direction: NO_DEFAULT_VALUE, 'show-progress': DEFAULT_TRUE, 'show-fullscreen-btn': DEFAULT_TRUE, 'show-play-btn': DEFAULT_TRUE, 'show-center-play-btn': DEFAULT_TRUE, 'enable-progress-gesture': DEFAULT_TRUE, 'object-fit': singleQuote('contain'), poster: NO_DEFAULT_VALUE, 'show-mute-btn': DEFAULT_FALSE, bindPlay: NO_DEFAULT_VALUE, bindPause: NO_DEFAULT_VALUE, bindEnded: NO_DEFAULT_VALUE, bindTimeUpdate: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindWaiting: NO_DEFAULT_VALUE, bindError: NO_DEFAULT_VALUE }, animation);\nconst Canvas = Object.assign({ 'canvas-id': NO_DEFAULT_VALUE, 'disable-scroll': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE }, touchEvents);\nconst Ad = {\n 'unit-id': NO_DEFAULT_VALUE,\n 'ad-intervals': NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindClose: NO_DEFAULT_VALUE\n};\nconst WebView = {\n src: NO_DEFAULT_VALUE,\n bindMessage: NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Block = {};\n// For Vue,因为 slot 标签被 vue 占用了\nconst SlotView = {\n name: NO_DEFAULT_VALUE\n};\n// For React\n// Slot 和 SlotView 最终都会编译成 <view slot={{ i.name }} />\n// 因为 <slot name=\"{{ i.name }}\" /> 适用性没有前者高(无法添加类和样式)\n// 不给 View 直接加 slot 属性的原因是性能损耗\nconst Slot = {\n name: NO_DEFAULT_VALUE\n};\nconst NativeSlot = {\n name: NO_DEFAULT_VALUE\n};\nconst Script = {};\nconst internalComponents = {\n View,\n Icon,\n Progress,\n RichText,\n Text,\n Button,\n Checkbox,\n CheckboxGroup,\n Form,\n Input,\n Label,\n Picker,\n PickerView,\n PickerViewColumn,\n Radio,\n RadioGroup,\n Slider,\n Switch,\n CoverImage,\n Textarea,\n CoverView,\n MovableArea,\n MovableView,\n ScrollView,\n Swiper,\n SwiperItem,\n Navigator,\n Audio,\n Camera,\n Image,\n LivePlayer,\n Video,\n Canvas,\n Ad,\n WebView,\n Block,\n Map: MapComp,\n Slot,\n SlotView,\n NativeSlot,\n Script,\n};\nconst controlledComponent = new Set([\n 'input',\n 'checkbox',\n 'picker',\n 'picker-view',\n 'radio',\n 'slider',\n 'switch',\n 'textarea'\n]);\nconst focusComponents = new Set([\n 'input',\n 'textarea'\n]);\nconst voidElements = new Set([\n 'progress',\n 'icon',\n 'rich-text',\n 'input',\n 'textarea',\n 'slider',\n 'switch',\n 'audio',\n 'ad',\n 'official-account',\n 'open-data',\n 'navigation-bar'\n]);\nconst nestElements = new Map([\n ['view', -1],\n ['catch-view', -1],\n ['cover-view', -1],\n ['static-view', -1],\n ['pure-view', -1],\n ['block', -1],\n ['text', -1],\n ['static-text', 6],\n ['slot', 8],\n ['slot-view', 8],\n ['label', 6],\n ['form', 4],\n ['scroll-view', 4],\n ['swiper', 4],\n ['swiper-item', 4],\n]);\n\nexports.PLATFORM_TYPE = void 0;\n(function (PLATFORM_TYPE) {\n PLATFORM_TYPE[\"MINI\"] = \"mini\";\n PLATFORM_TYPE[\"WEB\"] = \"web\";\n PLATFORM_TYPE[\"RN\"] = \"rn\";\n PLATFORM_TYPE[\"HARMONY\"] = \"harmony\";\n PLATFORM_TYPE[\"QUICK\"] = \"quickapp\";\n})(exports.PLATFORM_TYPE || (exports.PLATFORM_TYPE = {}));\nconst PLATFORM_CONFIG_MAP = {\n h5: {\n type: exports.PLATFORM_TYPE.WEB\n },\n harmony: {\n type: exports.PLATFORM_TYPE.HARMONY\n },\n mini: {\n type: exports.PLATFORM_TYPE.MINI\n },\n rn: {\n type: exports.PLATFORM_TYPE.RN\n },\n quickapp: {\n type: exports.PLATFORM_TYPE.QUICK\n },\n};\n\nclass Events {\n constructor(opts) {\n var _a;\n this.callbacks = (_a = opts === null || opts === void 0 ? void 0 : opts.callbacks) !== null && _a !== void 0 ? _a : {};\n }\n on(eventName, callback, context) {\n let event, tail, _eventName;\n if (!callback) {\n return this;\n }\n if (typeof eventName === 'symbol') {\n _eventName = [eventName];\n }\n else {\n _eventName = eventName.split(Events.eventSplitter);\n }\n this.callbacks || (this.callbacks = {});\n const calls = this.callbacks;\n while ((event = _eventName.shift())) {\n const list = calls[event];\n const node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = {\n tail,\n next: list ? list.next : node\n };\n }\n return this;\n }\n once(events, callback, context) {\n const wrapper = (...args) => {\n callback.apply(this, args);\n this.off(events, wrapper, context);\n };\n this.on(events, wrapper, context);\n return this;\n }\n off(events, callback, context) {\n let event, calls, _events;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (!(events || callback || context)) {\n delete this.callbacks;\n return this;\n }\n if (typeof events === 'symbol') {\n _events = [events];\n }\n else {\n _events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n }\n while ((event = _events.shift())) {\n let node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n const tail = node.tail;\n while ((node = node.next) !== tail) {\n const cb = node.callback;\n const ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n }\n }\n return this;\n }\n trigger(events, ...args) {\n let event, node, calls, _events;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (typeof events === 'symbol') {\n _events = [events];\n }\n else {\n _events = events.split(Events.eventSplitter);\n }\n while ((event = _events.shift())) {\n if ((node = calls[event])) {\n const tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n }\n return this;\n }\n}\nEvents.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\\s+/\n\nclass PageEvts extends Events {\n constructor() {\n super(...arguments);\n this.exeList = [];\n }\n on(eventName, callback) {\n super.on(eventName, callback, this);\n this.exeList = this.exeList.reduce((prev, item) => {\n if (item.eventName === eventName) {\n super.trigger(item.eventName, item.data);\n }\n else {\n prev.push(item);\n }\n return prev;\n }, []);\n return this;\n }\n emit(events, data) {\n // eslint-disable-next-line\n routeChannel.trigger(events, data);\n }\n}\nconst pageChannel = new PageEvts();\nclass RouteEvts extends Events {\n emit(events, data) {\n pageChannel.off(events);\n pageChannel.exeList.push({\n eventName: events,\n data\n });\n }\n addEvents(events) {\n if (!events || typeof events !== 'object')\n return;\n Object.keys(events).forEach(key => {\n this.off(key);\n this.on(key, events[key], this);\n });\n }\n}\nconst routeChannel = new RouteEvts();\nconst EventChannel = { pageChannel, routeChannel };\n\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return typeof o === 'undefined';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object';\n}\nfunction isBoolean(o) {\n return o === true || o === false;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isBooleanStringLiteral(o) {\n return o === 'true' || o === 'false';\n}\nconst isArray = Array.isArray;\nconst isWebPlatform = () => process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web';\n\nexports.HOOK_TYPE = void 0;\n(function (HOOK_TYPE) {\n HOOK_TYPE[HOOK_TYPE[\"SINGLE\"] = 0] = \"SINGLE\";\n HOOK_TYPE[HOOK_TYPE[\"MULTI\"] = 1] = \"MULTI\";\n HOOK_TYPE[HOOK_TYPE[\"WATERFALL\"] = 2] = \"WATERFALL\";\n})(exports.HOOK_TYPE || (exports.HOOK_TYPE = {}));\nconst defaultMiniLifecycle = {\n app: [\n 'onLaunch',\n 'onShow',\n 'onHide'\n ],\n page: [\n 'onLoad',\n 'onUnload',\n 'onReady',\n 'onShow',\n 'onHide',\n [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onResize',\n 'defer:onTabItemTap',\n 'onTitleClick',\n 'onOptionMenuClick',\n 'onPopMenuClick',\n 'onPullIntercept',\n 'onAddToFavorites'\n ],\n [\n 'onShareAppMessage',\n 'onShareTimeline'\n ]\n ],\n component: [\n 'attached',\n 'detached'\n ]\n};\nfunction TaroHook(type, initial) {\n return {\n type,\n initial: initial || null\n };\n}\nclass TaroHooks extends Events {\n constructor(hooks, opts) {\n super(opts);\n this.hooks = hooks;\n for (const hookName in hooks) {\n const { initial } = hooks[hookName];\n if (isFunction(initial)) {\n this.on(hookName, initial);\n }\n }\n }\n tapOneOrMany(hookName, callback) {\n const list = isFunction(callback) ? [callback] : callback;\n list.forEach(cb => this.on(hookName, cb));\n }\n tap(hookName, callback) {\n const hooks = this.hooks;\n const { type, initial } = hooks[hookName];\n if (type === exports.HOOK_TYPE.SINGLE) {\n this.off(hookName);\n this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);\n }\n else {\n initial && this.off(hookName, initial);\n this.tapOneOrMany(hookName, callback);\n }\n }\n call(hookName, ...rest) {\n var _a;\n const hook = this.hooks[hookName];\n if (!hook)\n return;\n const { type } = hook;\n const calls = this.callbacks;\n if (!calls)\n return;\n const list = calls[hookName];\n if (list) {\n const tail = list.tail;\n let node = list.next;\n let args = rest;\n let res;\n while (node !== tail) {\n res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);\n if (type === exports.HOOK_TYPE.WATERFALL) {\n const params = [res];\n args = params;\n }\n node = node.next;\n }\n return res;\n }\n }\n isExist(hookName) {\n var _a;\n return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);\n }\n}\nconst hooks = new TaroHooks({\n getMiniLifecycle: TaroHook(exports.HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n getMiniLifecycleImpl: TaroHook(exports.HOOK_TYPE.SINGLE, function () {\n return this.call('getMiniLifecycle', defaultMiniLifecycle);\n }),\n getLifecycle: TaroHook(exports.HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n modifyRecursiveComponentConfig: TaroHook(exports.HOOK_TYPE.SINGLE, (defaultConfig) => defaultConfig),\n getPathIndex: TaroHook(exports.HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n getEventCenter: TaroHook(exports.HOOK_TYPE.SINGLE, Events => new Events()),\n isBubbleEvents: TaroHook(exports.HOOK_TYPE.SINGLE, eventName => {\n /**\n * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致\n * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n */\n const BUBBLE_EVENTS = new Set([\n 'touchstart',\n 'touchmove',\n 'touchcancel',\n 'touchend',\n 'touchforcechange',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend'\n ]);\n return BUBBLE_EVENTS.has(eventName);\n }),\n getSpecialNodes: TaroHook(exports.HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n onRemoveAttribute: TaroHook(exports.HOOK_TYPE.SINGLE),\n batchedEventUpdates: TaroHook(exports.HOOK_TYPE.SINGLE),\n mergePageInstance: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyPageObject: TaroHook(exports.HOOK_TYPE.SINGLE),\n createPullDownComponent: TaroHook(exports.HOOK_TYPE.SINGLE),\n getDOMNode: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyHydrateData: TaroHook(exports.HOOK_TYPE.SINGLE),\n transferHydrateData: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifySetAttrPayload: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyRmAttrPayload: TaroHook(exports.HOOK_TYPE.SINGLE),\n onAddEvent: TaroHook(exports.HOOK_TYPE.SINGLE),\n proxyToRaw: TaroHook(exports.HOOK_TYPE.SINGLE, function (proxyObj) {\n return proxyObj;\n }),\n modifyMpEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyMpEventImpl: TaroHook(exports.HOOK_TYPE.SINGLE, function (e) {\n try {\n // 有些小程序的事件对象的某些属性只读\n this.call('modifyMpEvent', e);\n }\n catch (error) {\n console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));\n }\n }),\n injectNewStyleProperties: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyTaroEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n dispatchTaroEvent: TaroHook(exports.HOOK_TYPE.SINGLE, (e, node) => {\n node.dispatchEvent(e);\n }),\n dispatchTaroEventFinish: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyTaroEventReturn: TaroHook(exports.HOOK_TYPE.SINGLE, () => undefined),\n modifyDispatchEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n initNativeApi: TaroHook(exports.HOOK_TYPE.MULTI),\n patchElement: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyAddEventListener: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyRemoveEventListener: TaroHook(exports.HOOK_TYPE.SINGLE),\n});\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst noop = (..._) => { };\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param v Value.\n * @returns Boxed value.\n */\nconst box = (v) => ({ v });\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param b Boxed value.\n * @returns Value.\n */\nconst unbox = (b) => b.v;\nfunction toDashed(s) {\n return s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction toCamelCase(s) {\n let camel = '';\n let nextCap = false;\n for (let i = 0; i < s.length; i++) {\n if (s[i] !== '-') {\n camel += nextCap ? s[i].toUpperCase() : s[i];\n nextCap = false;\n }\n else {\n nextCap = true;\n }\n }\n return camel;\n}\nconst toKebabCase = function (string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\nfunction capitalize(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n/**\n * ensure takes a condition and throw a error if the condition fails,\n * like failure::ensure: https://docs.rs/failure/0.1.1/failure/macro.ensure.html\n * @param condition condition.\n * @param msg error message.\n */\nfunction ensure(condition, msg) {\n if (!condition) {\n if (process.env.NODE_ENV !== 'production') {\n const reportIssue = '\\n如有疑问,请提交 issue 至:https://github.com/nervjs/taro/issues';\n throw new Error(msg + reportIssue);\n }\n else {\n throw new Error(msg);\n }\n }\n}\nfunction warn(condition, msg) {\n if (process.env.NODE_ENV !== 'production') {\n if (condition) {\n console.warn(`[taro warn] ${msg}`);\n }\n }\n}\nfunction queryToJson(str) {\n const dec = decodeURIComponent;\n const qp = str.split('&');\n const ret = {};\n let name;\n let val;\n for (let i = 0, l = qp.length, item; i < l; ++i) {\n item = qp[i];\n if (item.length) {\n const s = item.indexOf('=');\n if (s < 0) {\n name = dec(item);\n val = '';\n }\n else {\n name = dec(item.slice(0, s));\n val = dec(item.slice(s + 1));\n }\n if (typeof ret[name] === 'string') { // inline'd type check\n ret[name] = [ret[name]];\n }\n if (Array.isArray(ret[name])) {\n ret[name].push(val);\n }\n else {\n ret[name] = val;\n }\n }\n }\n return ret; // Object\n}\nlet _uniqueId = 1;\nconst _loadTime = (new Date()).getTime().toString();\nfunction getUniqueKey() {\n return _loadTime + (_uniqueId++);\n}\nconst cacheData = {};\nfunction cacheDataSet(key, val) {\n cacheData[key] = val;\n}\nfunction cacheDataGet(key, delelteAfterGet) {\n const temp = cacheData[key];\n delelteAfterGet && delete cacheData[key];\n return temp;\n}\nfunction cacheDataHas(key) {\n return key in cacheData;\n}\nfunction mergeInternalComponents(components) {\n Object.keys(components).forEach(name => {\n if (name in internalComponents) {\n Object.assign(internalComponents[name], components[name]);\n }\n else {\n internalComponents[name] = components[name];\n }\n });\n return internalComponents;\n}\nfunction getComponentsAlias(origin) {\n const mapping = {};\n const viewAttrs = origin.View;\n const extraList = {\n '#text': {},\n StaticView: viewAttrs,\n StaticImage: origin.Image,\n StaticText: origin.Text,\n PureView: viewAttrs,\n CatchView: viewAttrs\n };\n origin = Object.assign(Object.assign({}, origin), extraList);\n Object.keys(origin)\n .sort((a, b) => {\n const reg = /^(Static|Pure|Catch)*(View|Image|Text)$/;\n const isACommonly = reg.test(a);\n const isBCommonly = reg.test(b);\n if (isACommonly && isBCommonly) {\n return a > b ? 1 : -1;\n }\n else if (isACommonly) {\n return -1;\n }\n else if (isBCommonly) {\n return 1;\n }\n else {\n return a >= b ? 1 : -1;\n }\n })\n .forEach((key, num) => {\n const obj = {\n _num: String(num)\n };\n Object.keys(origin[key])\n .filter(attr => !(/^bind/.test(attr)) && !['focus', 'blur'].includes(attr))\n .sort()\n .forEach((attr, index) => {\n obj[toCamelCase(attr)] = 'p' + index;\n });\n mapping[toDashed(key)] = obj;\n });\n return mapping;\n}\nfunction getPlatformType(platform = 'weapp', configNameOrType = exports.PLATFORM_TYPE.MINI) {\n if (Object.keys(PLATFORM_CONFIG_MAP).includes(platform)) {\n configNameOrType = platform;\n }\n const param = PLATFORM_CONFIG_MAP[configNameOrType] || {};\n return param.type || configNameOrType;\n}\nfunction mergeReconciler(hostConfig, hooksForTest) {\n const obj = hooksForTest || hooks;\n const keys = Object.keys(hostConfig);\n keys.forEach(key => {\n obj.tap(key, hostConfig[key]);\n });\n}\nfunction nonsupport(api) {\n return function () {\n console.warn(`小程序暂不支持 ${api}`);\n };\n}\nfunction setUniqueKeyToRoute(key, obj) {\n const routerParamsPrivateKey = '__key_';\n const useDataCacheApis = [\n 'navigateTo',\n 'redirectTo',\n 'reLaunch',\n 'switchTab'\n ];\n if (useDataCacheApis.indexOf(key) > -1) {\n const url = obj.url = obj.url || '';\n const hasMark = url.indexOf('?') > -1;\n const cacheKey = getUniqueKey();\n obj.url += (hasMark ? '&' : '?') + `${routerParamsPrivateKey}=${cacheKey}`;\n }\n}\nfunction indent(str, size) {\n return str.split('\\n')\n .map((line, index) => {\n const indent = index === 0 ? '' : Array(size).fill(' ').join('');\n return indent + line;\n })\n .join('\\n');\n}\n\nconst needPromiseApis = new Set([\n 'addPhoneContact',\n 'authorize',\n 'canvasGetImageData',\n 'canvasPutImageData',\n 'canvasToTempFilePath',\n 'checkSession',\n 'chooseAddress',\n 'chooseImage',\n 'chooseInvoiceTitle',\n 'chooseLocation',\n 'chooseVideo',\n 'clearStorage',\n 'closeBLEConnection',\n 'closeBluetoothAdapter',\n 'closeSocket',\n 'compressImage',\n 'connectSocket',\n 'createBLEConnection',\n 'downloadFile',\n 'exitMiniProgram',\n 'getAvailableAudioSources',\n 'getBLEDeviceCharacteristics',\n 'getBLEDeviceServices',\n 'getBatteryInfo',\n 'getBeacons',\n 'getBluetoothAdapterState',\n 'getBluetoothDevices',\n 'getClipboardData',\n 'getConnectedBluetoothDevices',\n 'getConnectedWifi',\n 'getExtConfig',\n 'getFileInfo',\n 'getImageInfo',\n 'getLocation',\n 'getNetworkType',\n 'getSavedFileInfo',\n 'getSavedFileList',\n 'getScreenBrightness',\n 'getSetting',\n 'getStorage',\n 'getStorageInfo',\n 'getSystemInfo',\n 'getUserInfo',\n 'getWifiList',\n 'hideHomeButton',\n 'hideShareMenu',\n 'hideTabBar',\n 'hideTabBarRedDot',\n 'loadFontFace',\n 'login',\n 'makePhoneCall',\n 'navigateBack',\n 'navigateBackMiniProgram',\n 'navigateTo',\n 'navigateToBookshelf',\n 'navigateToMiniProgram',\n 'notifyBLECharacteristicValueChange',\n 'hideKeyboard',\n 'hideLoading',\n 'hideNavigationBarLoading',\n 'hideToast',\n 'openBluetoothAdapter',\n 'openDocument',\n 'openLocation',\n 'openSetting',\n 'pageScrollTo',\n 'previewImage',\n 'queryBookshelf',\n 'reLaunch',\n 'readBLECharacteristicValue',\n 'redirectTo',\n 'removeSavedFile',\n 'removeStorage',\n 'removeTabBarBadge',\n 'requestSubscribeMessage',\n 'saveFile',\n 'saveImageToPhotosAlbum',\n 'saveVideoToPhotosAlbum',\n 'scanCode',\n 'sendSocketMessage',\n 'setBackgroundColor',\n 'setBackgroundTextStyle',\n 'setClipboardData',\n 'setEnableDebug',\n 'setInnerAudioOption',\n 'setKeepScreenOn',\n 'setNavigationBarColor',\n 'setNavigationBarTitle',\n 'setScreenBrightness',\n 'setStorage',\n 'setTabBarBadge',\n 'setTabBarItem',\n 'setTabBarStyle',\n 'showActionSheet',\n 'showFavoriteGuide',\n 'showLoading',\n 'showModal',\n 'showShareMenu',\n 'showTabBar',\n 'showTabBarRedDot',\n 'showToast',\n 'startBeaconDiscovery',\n 'startBluetoothDevicesDiscovery',\n 'startDeviceMotionListening',\n 'startPullDownRefresh',\n 'stopBeaconDiscovery',\n 'stopBluetoothDevicesDiscovery',\n 'stopCompass',\n 'startCompass',\n 'startAccelerometer',\n 'stopAccelerometer',\n 'showNavigationBarLoading',\n 'stopDeviceMotionListening',\n 'stopPullDownRefresh',\n 'switchTab',\n 'uploadFile',\n 'vibrateLong',\n 'vibrateShort',\n 'writeBLECharacteristicValue'\n]);\nfunction getCanIUseWebp(taro) {\n return function () {\n var _a;\n const res = (_a = taro.getSystemInfoSync) === null || _a === void 0 ? void 0 : _a.call(taro);\n if (!res) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('不支持 API canIUseWebp');\n }\n return false;\n }\n const { platform } = res;\n const platformLower = platform.toLowerCase();\n if (platformLower === 'android' || platformLower === 'devtools') {\n return true;\n }\n return false;\n };\n}\nfunction getNormalRequest(global) {\n return function request(options) {\n options = options\n ? (isString(options)\n ? { url: options }\n : options)\n : {};\n const originSuccess = options.success;\n const originFail = options.fail;\n const originComplete = options.complete;\n let requestTask;\n const p = new Promise((resolve, reject) => {\n options.success = res => {\n originSuccess && originSuccess(res);\n resolve(res);\n };\n options.fail = res => {\n originFail && originFail(res);\n reject(res);\n };\n options.complete = res => {\n originComplete && originComplete(res);\n };\n requestTask = global.request(options);\n });\n equipTaskMethodsIntoPromise(requestTask, p);\n p.abort = (cb) => {\n cb && cb();\n if (requestTask) {\n requestTask.abort();\n }\n return p;\n };\n return p;\n };\n}\nfunction processApis(taro, global, config = {}) {\n const patchNeedPromiseApis = config.needPromiseApis || [];\n const _needPromiseApis = new Set([...patchNeedPromiseApis, ...needPromiseApis]);\n const preserved = [\n 'getEnv',\n 'interceptors',\n 'Current',\n 'getCurrentInstance',\n 'options',\n 'nextTick',\n 'eventCenter',\n 'Events',\n 'preload',\n 'webpackJsonp'\n ];\n const apis = new Set(!config.isOnlyPromisify\n ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n : patchNeedPromiseApis);\n if (config.modifyApis) {\n config.modifyApis(apis);\n }\n apis.forEach(key => {\n if (_needPromiseApis.has(key)) {\n const originKey = key;\n taro[originKey] = (options = {}, ...args) => {\n let key = originKey;\n // 第一个参数 options 为字符串,单独处理\n if (typeof options === 'string') {\n if (args.length) {\n return global[key](options, ...args);\n }\n return global[key](options);\n }\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n const transformResult = config.transformMeta(key, options);\n key = transformResult.key;\n options = transformResult.options;\n // 新 key 可能不存在\n if (!global.hasOwnProperty(key)) {\n return nonsupport(key)();\n }\n }\n let task = null;\n const obj = Object.assign({}, options);\n // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n setUniqueKeyToRoute(key, options);\n // Promise 化\n const p = new Promise((resolve, reject) => {\n obj.success = res => {\n var _a, _b;\n (_a = config.modifyAsyncResult) === null || _a === void 0 ? void 0 : _a.call(config, key, res);\n (_b = options.success) === null || _b === void 0 ? void 0 : _b.call(options, res);\n if (key === 'connectSocket') {\n resolve(Promise.resolve().then(() => task ? Object.assign(task, res) : res));\n }\n else {\n resolve(res);\n }\n };\n obj.fail = res => {\n var _a;\n (_a = options.fail) === null || _a === void 0 ? void 0 : _a.call(options, res);\n reject(res);\n };\n obj.complete = res => {\n var _a;\n (_a = options.complete) === null || _a === void 0 ? void 0 : _a.call(options, res);\n };\n if (args.length) {\n task = global[key](obj, ...args);\n }\n else {\n task = global[key](obj);\n }\n });\n // 给 promise 对象挂载属性\n if (['uploadFile', 'downloadFile'].includes(key)) {\n equipTaskMethodsIntoPromise(task, p);\n p.progress = cb => {\n task === null || task === void 0 ? void 0 : task.onProgressUpdate(cb);\n return p;\n };\n p.abort = cb => {\n cb === null || cb === void 0 ? void 0 : cb();\n task === null || task === void 0 ? void 0 : task.abort();\n return p;\n };\n }\n return p;\n };\n }\n else {\n let platformKey = key;\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n platformKey = config.transformMeta(key, {}).key;\n }\n // API 不存在\n if (!global.hasOwnProperty(platformKey)) {\n taro[key] = nonsupport(key);\n return;\n }\n if (isFunction(global[key])) {\n taro[key] = (...args) => {\n if (config.handleSyncApis) {\n return config.handleSyncApis(key, global, args);\n }\n else {\n return global[platformKey].apply(global, args);\n }\n };\n }\n else {\n taro[key] = global[platformKey];\n }\n }\n });\n !config.isOnlyPromisify && equipCommonApis(taro, global, config);\n}\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象,如微信的 wx,支付宝的 my\n */\nfunction equipCommonApis(taro, global, apis = {}) {\n taro.canIUseWebp = getCanIUseWebp(taro);\n taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages');\n taro.getApp = getApp || nonsupport('getApp');\n taro.env = global.env || {};\n try {\n taro.requirePlugin = requirePlugin || nonsupport('requirePlugin');\n }\n catch (error) {\n taro.requirePlugin = nonsupport('requirePlugin');\n }\n // request & interceptors\n const request = apis.request || getNormalRequest(global);\n function taroInterceptor(chain) {\n return request(chain.requestParams);\n }\n const link = new taro.Link(taroInterceptor);\n taro.request = link.request.bind(link);\n taro.addInterceptor = link.addInterceptor.bind(link);\n taro.cleanInterceptors = link.cleanInterceptors.bind(link);\n taro.miniGlobal = taro.options.miniGlobal = global;\n taro.getAppInfo = function () {\n return {\n platform: process.env.TARO_PLATFORM || 'MiniProgram',\n taroVersion: process.env.TARO_VERSION || 'unknown',\n designWidth: taro.config.designWidth\n };\n };\n taro.createSelectorQuery = delayRef(taro, global, 'createSelectorQuery', 'exec');\n taro.createIntersectionObserver = delayRef(taro, global, 'createIntersectionObserver', 'observe');\n}\n/**\n * 将Task对象中的方法挂载到promise对象中,适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise(task, promise) {\n if (!task || !promise)\n return;\n const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived'];\n task && taskMethods.forEach(method => {\n if (method in task) {\n promise[method] = task[method].bind(task);\n }\n });\n}\nfunction delayRef(taro, global, name, method) {\n return function (...args) {\n const res = global[name](...args);\n const raw = res[method].bind(res);\n res[method] = function (...methodArgs) {\n taro.nextTick(() => raw(...methodArgs));\n };\n return res;\n };\n}\n\n// 字符串简写\nexports.Shortcuts = void 0;\n(function (Shortcuts) {\n Shortcuts[\"Container\"] = \"container\";\n Shortcuts[\"Childnodes\"] = \"cn\";\n Shortcuts[\"Text\"] = \"v\";\n Shortcuts[\"NodeType\"] = \"nt\";\n Shortcuts[\"NodeName\"] = \"nn\";\n // Attrtibutes\n Shortcuts[\"Style\"] = \"st\";\n Shortcuts[\"Class\"] = \"cl\";\n Shortcuts[\"Src\"] = \"src\";\n})(exports.Shortcuts || (exports.Shortcuts = {}));\n\nexports.EMPTY_ARR = EMPTY_ARR;\nexports.EMPTY_OBJ = EMPTY_OBJ;\nexports.EventChannel = EventChannel;\nexports.Events = Events;\nexports.PLATFORM_CONFIG_MAP = PLATFORM_CONFIG_MAP;\nexports.TaroHook = TaroHook;\nexports.TaroHooks = TaroHooks;\nexports.animation = animation;\nexports.box = box;\nexports.cacheDataGet = cacheDataGet;\nexports.cacheDataHas = cacheDataHas;\nexports.cacheDataSet = cacheDataSet;\nexports.capitalize = capitalize;\nexports.controlledComponent = controlledComponent;\nexports.ensure = ensure;\nexports.focusComponents = focusComponents;\nexports.getComponentsAlias = getComponentsAlias;\nexports.getPlatformType = getPlatformType;\nexports.getUniqueKey = getUniqueKey;\nexports.hasOwn = hasOwn;\nexports.hooks = hooks;\nexports.indent = indent;\nexports.internalComponents = internalComponents;\nexports.isArray = isArray;\nexports.isBoolean = isBoolean;\nexports.isBooleanStringLiteral = isBooleanStringLiteral;\nexports.isFunction = isFunction;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isString = isString;\nexports.isUndefined = isUndefined;\nexports.isWebPlatform = isWebPlatform;\nexports.mergeInternalComponents = mergeInternalComponents;\nexports.mergeReconciler = mergeReconciler;\nexports.nestElements = nestElements;\nexports.nonsupport = nonsupport;\nexports.noop = noop;\nexports.processApis = processApis;\nexports.queryToJson = queryToJson;\nexports.setUniqueKeyToRoute = setUniqueKeyToRoute;\nexports.singleQuote = singleQuote;\nexports.toCamelCase = toCamelCase;\nexports.toDashed = toDashed;\nexports.toKebabCase = toKebabCase;\nexports.touchEvents = touchEvents;\nexports.unbox = unbox;\nexports.voidElements = voidElements;\nexports.warn = warn;\n//# sourceMappingURL=index.cjs.js.map\n","const { hooks } = require('@tarojs/runtime')\nconst taro = require('@tarojs/api').default\n\nif (hooks.isExist('initNativeApi')) {\n hooks.call('initNativeApi', taro)\n}\n\nmodule.exports = taro\nmodule.exports.default = module.exports\n","/**\n * Promise-based replacement for setTimeout / clearTimeout.\n */\n\nconst {promiseFinally, toError} = require('./utils');\n\nmodule.exports = class Timeout {\n static set(delay, rejectReason) {\n return new Timeout().set(delay, rejectReason);\n }\n\n static wrap(promise, delay, rejectReason) {\n return new Timeout().wrap(promise, delay, rejectReason);\n }\n\n constructor() {\n this._id = null;\n this._delay = null;\n }\n\n get id() {\n return this._id;\n }\n\n get delay() {\n return this._delay;\n }\n\n set(delay, rejectReason = '') {\n return new Promise((resolve, reject) => {\n this.clear();\n const fn = rejectReason ? () => reject(toError(rejectReason)) : resolve;\n this._id = setTimeout(fn, delay);\n this._delay = delay;\n });\n }\n\n wrap(promise, delay, rejectReason = '') {\n const wrappedPromise = promiseFinally(promise, () => this.clear());\n const timer = this.set(delay, rejectReason);\n return Promise.race([\n wrappedPromise,\n timer\n ]);\n }\n\n clear() {\n if (this._id) {\n clearTimeout(this._id);\n }\n }\n};\n","exports.promiseFinally = (promise, fn) => {\n const success = result => {\n fn();\n return result;\n };\n const error = e => {\n fn();\n return Promise.reject(e);\n };\n return Promise.resolve(promise).then(success, error);\n};\n\n/**\n * Converts any value to Error.\n * @param {*} value\n * @returns {Error}\n */\nexports.toError = value => {\n value = typeof value === 'function' ? value() : value;\n return typeof value === 'string' ? new Error(value) : value;\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(926);\n",""],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":["__importDefault","this","mod","__esModule","default","Object","defineProperty","exports","value","TaroBleConnectedDevice","frame_father_1","__webpack_require__","await_timeout_1","taro_1","device","scpair","_connectionState","dataOfRead","notifyCallback","constructor","options","ConnectionState","CONNECTED","doListen","notify","callback","read","onBLECharacteristicValueChange","async","onBLEConnectionStateChange","connected","DISCONNECTED","notifyBLECharacteristicValueChange","deviceId","serviceId","service","uuid","characteristicId","state","success","result","console","log","fail","e","error","realRead","Promise","resolve","reject","readBLECharacteristicValue","errMsg","indexOf","origin","connectionState","deviceName","localName","name","disconnect","closeBLEConnection","canRead","length","splice","timeout","startTime","Date","now","Uint8Array","set","data","pop","write","writeBLECharacteristicValue","buffer","flush","__createBinding","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","TaroBleBluetooth","device_bluetooth_traits_1","connected_1","Jluetooth","discoveredCallback","connectedDevice","super","onBluetoothDeviceFound","isConnected","bluetoothAdapterState","getBluetoothAdapterState","r","connect","autoSwitchDevice","createBLEConnection","services","getBLEDeviceServices","findSCPair","stopDiscovery","discovered","startDiscovery","requestLocation","closeBluetoothAdapter","openBluetoothAdapter","available","discovering","startBluetoothDevicesDiscovery","allowDuplicatesKey","interval","stopBluetoothDevicesDiscovery","ret","foundDevices","devices","filter","item","allowNoName","map","JluetoothDevice","getBLEDeviceCharacteristics","characteristics","getLocation","_characteristicsMap","Map","allowedWriteCharacteristic","allowedReadCharacteristic","TBluetoothHelpers","isAllowServices","allowServices","writeCharacteristic","readCharacteristic","characteristic","toLowerCase","pickedCharacteristic","find","properties","allowDetectDifferentCharacteristic","types_1","isAllowService","serviceUUID","allowService","rule","AllowRule","EQUALS","START_WITH","startsWith","END_WITH","endsWith","REGEX","RegExp","test","isDiscovery","FakeConnectedDevice","father_1","PsdkConst","EMPTY_BYTES","ReadOptions","WroteReporter","ok","binary","controlExit","exception","PSDK","write_operation_1","sversion","authors","DEF_AUTHORS","raw","commander","pushArg","variable","command","clear","Error","WriteOptions","def","operation","DataWriteOperation","reporter","newline","push","BasicArg","DEF_ENABLED_NEWLINE","OnlyTextHeaderArg","OnlyBinaryHeaderArg","EasyArg","arg_1","command_1","prependClauses","appendClauses","append","arg","clauses","prepend","clause","currentClauses","type","ClauseType","NONE","CommandClause","header","text","RawMode","Raw","easy_1","_mode","_text","_charset","_binary","_newline","TEXT","charset","DEF_CHARSET","BINARY","none","DefaultCommand","BasicCommand","base64_1","command_clause_1","toolkit_1","base64","Base64","fromUint8Array","bytes","t","PVariableKit","replace","t_buffer","FastGBK","encode","t_binary","Array","slice","concat","NEWLINE","b","from","hex","output","HexOutput","format","string","decode","_type","DEF_NEWLINE_BINARY","Commander","_variable","make","pushText","CRLF","substring","pushClause","pushBinary","pushClauses","forEach","TextAppendat","Appendat","_argument","_condition","_callback","argument","condition","quote","Checker","truthy","_quote","cb","BinaryCommand","u8a","appendNumber","num","appendText","appendU8A","TSPLCommand","CPCLCommand","SingleCommand","appendat_1","_arguments","_symbolAfterHeader","_symbolBetweenArguments","_header","symbolAfterHeader","symbolBetweenArguments","getHeader","appendat","arguments","BasicStringSingleCommand","isNaN","toString","args","len","seq","adapter_1","enableChunkWrite","writData","doCallback","writeData","parts","CollectionKit","split","chunkSize","totalTimes","currentTimes","part","partBinary","control","WriteControl","STOP","CONTINUE","dataWrote","DataWrote","failed","DEF_MAX_LENGTH_OF_LINE","enableFormat","spacing","maxLengthOfLine","simple","formatWithMaxLength","byte","join","fmted","textLength","lineIndex","ix","v","Lifecycle","CR","LF","QUOTE","ByteKit","textToU8A","DEF_WRITE_CHUNK_SIZE","DataWrite","IDataWriteCallback","psdk_const_1","message","extendBuiltins","extendUint8Array","extendString","toUint8Array","isValid","btou","encodeURL","encodeURI","utob","toBase64","fromBase64","btoaPolyfill","btoa","atobPolyfill","atob","VERSION","version","_hasBuffer","Buffer","_TD","TextDecoder","_TE","TextEncoder","b64ch","b64chs","b64tab","a","tab","c","i","b64re","_fromCC","String","fromCharCode","bind","_U8Afrom","it","_mkUriSafe","src","m0","_tidyB64","s","bin","u32","c0","c1","c2","asc","pad","charCodeAt","TypeError","_btoa","_fromUint8Array","maxargs","strs","l","apply","subarray","urlsafe","cb_utob","cc","re_utob","u","_encode","re_btou","cb_btou","cccc","cp","offset","u24","r1","r2","charAt","_atob","_toUint8Array","_unURI","_decode","_noEnum","_add","body","gBase64","checker_1","empty","table","initGbkTable","ranges","codes","Uint16Array","b1Begin","b1End","b2Begin","b2End","b2","b1","fill","str","defaultOnAlloc","defaultOnError","gbkDecoder","onAlloc","onError","buf","n","code","gbk","colls","size","rets","items","coll","pnum","Math","floor","ImageKit","processImage","canvas","width","height","ctx","getContext","eWidth","currentHeight","index","area","imgData","getImageData","eightBitIndex","x","pixels","fastExtractPixel","pixel","red","green","blue","imageData","y","w","h","j","g","idx","regx","tmpMark","match","exec","originDefined","originVarx","varName","trim","varValue","tmpDefined","runtime","shared","ENV_TYPE","WEAPP","SWAN","ALIPAY","TT","QQ","JD","WEB","RN","HARMONY","QUICKAPP","HARMONYHYBRID","getEnv","process","env","TARO_ENV","TARO_PLATFORM","Chain","requestParams","interceptors","proceed","nextInterceptor","_getNextInterceptor","nextChain","_getNextChain","res","catch","err","keys","isFunction","Link","interceptor","taroInterceptor","chain","request","assign","addInterceptor","cleanInterceptors","interceptorify","promiseifyApi","timeoutInterceptor","setTimeout","clearTimeout","then","isUndefined","abort","logInterceptor","method","url","freeze","__proto__","Behavior","getPreload","current","key","val","preloadData","isObject","defaultDesignWidth","defaultDesignRatio","defaultBaseFontSize","defaultUnitPrecision","defaultTargetUnit","getInitPxTransform","taro","config","designWidth","deviceRatio","baseFontSize","targetUnit","unitPrecision","getPxTransform","input","formatSize","rootValue","Number","toFixed","Taro","Current","getCurrentInstance","nextTick","eventCenter","Events","initPxTransform","preload","pxTransform","module","__extends","__assign","__rest","__decorate","__param","__esDecorate","__runInitializers","__propKey","__setFunctionName","__metadata","__awaiter","__generator","__values","__read","__spread","__spreadArrays","__spreadArray","__await","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__classPrivateFieldGet","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","__disposeResources","tslib_tslib","modules","PROPERTY_THRESHOLD","TARO_RUNTIME","HOOKS_APP_ID","SET_DATA","PAGE_INIT","ROOT_STR","HTML","HEAD","BODY","APP","CONTAINER","DOCUMENT_ELEMENT_NAME","DOCUMENT_FRAGMENT","ID","UID","CLASS","STYLE","FOCUS","VIEW","STATIC_VIEW","PURE_VIEW","PROPS","DATASET","OBJECT","VALUE","INPUT","CHANGE","CUSTOM_WRAPPER","TARGET","CURRENT_TARGET","TYPE","CONFIRM","TIME_STAMP","KEY_CODE","TOUCHMOVE","DATE","SET_TIMEOUT","COMPILE_MODE","CATCHMOVE","CATCH_VIEW","COMMENT","ON_LOAD","ON_READY","ON_SHOW","ON_HIDE","OPTIONS","EXTERNAL_CLASSES","EVENT_CALLBACK_RESULT","BEHAVIORS","A","CONTEXT_ACTIONS","observers","MutationObserverImpl","records","observe","target","takeRecords","sidMatches","observerTarget","sid","isConcerned","record","characterData","characterDataOldValue","attributes","attributeOldValue","childList","oldValue","pendingMuatations","logMutation","observer","recordMutation","parentNode","subtree","MutationObserver$1","MutationObserver","ENABLE_MUTATION_OBSERVER","core","NODE_ENV","warn","index_cjs","noop","throttle","fn","threshold","scope","lastTime","deferTimer","context","incrementId","chatCodes","chatCodesLen","list","tailIdx","isElement","node","nodeType","isText","isComment","nodeName","isHasExtractProp","el","props","prop","Boolean","isParentBinded","_a","parentElement","__handlers","shortcutAttr","customWrapperCache","extend","ctor","methodName","componentsAlias$1","getComponentsAlias","internalComponents","ClassList","className","tokenList","token","add","updated","tokens","checkTokenIsValid","_update","remove","contains","toggle","force","replacement_token","EventSource","removeNode","child","uid","delete","removeNodeTree","childNodes","eventSource","window","EMPTY_OBJ","document","SPECIAL_NODES","componentsAlias","hydrate","hooks","compileModeName","nodeValue","_num","isAnyEventBinded","propInCamelCase","toCamelCase","cssText","nn","componentAlias","resData","TaroEventTarget","addEventListener","handler","isCapture","isOnce","capture","once","wrapper","removeEventListener","oldHandler","handlers","isArray","findIndex","CHILDNODES","nodeId","TaroNode","updateChildNodes","isClean","cleanChildNodes","rerenderChildNodes","enqueueUpdate","path","_path","updateSingleChild","childIndex","_root","refChild","ensure","indexOfNode","nextSibling","previousSibling","firstChild","lastChild","textContent","removedNodes","addedNodes","removeChild","doUpdate","newText","createTextNode","appendChild","insertBefore","newChild","isReplace","reduceRight","previousValue","currentValue","cleanRef","childNodesLength","isOnlyChild","mark","replaceChild","oldChild","hasChildNodes","payload","ownerDocument","WEBKIT","styleProperties","combine","prefix","excludeSelf","color","style","runtime_esm_image","color_style_width","fitlength_fitwidth_image","fitlength_fitwidth_image_radius","color_style_width_fitlength_fitwidth_image","endRadius_startRadius","bottom_left_right_top","end_start","content_items_self","blockSize_height_inlineSize_width","after_before","recordCss","obj","_element","attributeName","element","setStyle","newVal","styleKey","isString","old","_pending","isNull","_usedStyleProp","_value","initStyle","defineProperties","isCssVariable","propertyName","Style","Set","setCssVariables","texts","styleName","toDashed","removeProperty","rules","propName","valList","setProperty","has","getPropertyValue","tap","newStyleProperties","returnTrue","treeToArray","root","predict","array","object","following","isElmentTypeValid","TaroElement","dataset","_stopPropagation","event","listeners","_stop","id","getAttribute","setAttribute","classList","children","propKeys","attrs","hasAttribute","qualifiedName","hasAttributes","focus","blur","isPureView","_alias","viewAlias","staticViewAlias","catchViewAlias","qualifiedNameInCamelCase","qualifiedNameAlias","removeAttribute","isStaticView","isInterrupt","pureViewAlias","attr","getElementsByTagName","tagName","getElementsByClassName","classNames","every","dispatchEvent","cancelable","listener","_end","defaultPrevented","mpEvent","sideEffect","alias","valueAlias","prerender","debug","initPosition","column","line","feedPosition","position","start","end","char","jumpPosition","copyPosition","whitespace","isWhitespaceChar","equalSign","isEqualSignChar","shouldBeIgnore","html","skipElements","alphanumeric","findTextEnd","textEnd","isWordEnd","cursor","wordBegin","Scaner","scan","scanText","scanComment","scanTag","scanSkipTag","content","contentEnd","commentEnd","scanTagStart","scanTagName","scanAttrs","scanTagEnd","secondChar","close","firstChar","isTagChar","words","isQuoteEnd","isTagEnd","isQuoteStart","wLen","word","isNotPair","includes","secondWord","newWord","thirdWord","safeTagName","nextTag","unquote","car","LEFT_BRACKET","RIGHT_BRACKET","CLASS_SELECTOR","ID_SELECTOR","CHILD_COMBINATOR","GENERAL_SIBLING_COMBINATOR","ADJACENT_SIBLING_COMBINATOR","StyleTagParser","styles","extractStyle","REG_STYLE","_","$1","stringToSelector","lb","rb","selectors","selectorList","parseSelector","selector","isChild","isGeneralSibling","isAdjacentSibling","tag","class","all","substr","matchStyle","sortStyles","reduce","nextSelector","isMatch","matchCurrent","prev","getPreviousElement","h5tagName","isSiblingMatch","cls","parent","sort","s1","s2","hundreds1","getHundredsWeight","hundreds2","tens1","getTensWeight","tens2","ones1","getOnesWeight","ones2","pre","cur","makeMap","expectsLowerCase","specialMiniElements","img","iframe","internalCompsList","isMiniElements","isInlineElements","isBlockElements","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","tr","td","hasTerminalParent","stack","tagParents","currentIndex","parentTagName","getTagName","renderHTMLTag","splitEqual","sep","styleOptions","transformText","createElement","styleTagParser","descendantList","transformElement","parser","parse","nodes","tagToken","shouldRewind","endToken","isClosingTag","closingElements","shouldRewindToAutoClose","previousIndex","attrToken","hasChildren","voidElements","innerState","setInnerHTML","getBoundingClientRectImpl","miniGlobal","query","createSelectorQuery","select","boundingClientRect","getTemplateContent","insertAdjacentHTML","_b","parsedNodes","cloneNode","isDeep","newNode","isContains","some","childNode","ENABLE_INNER_HTML","ENABLE_ADJACENT_HTML","ENABLE_CLONE_NODE","ENABLE_CONTAINS","ENABLE_SIZE_APIS","ENABLE_TEMPLATE_CONTENT","TaroEvent","opts","button","timeStamp","bubbles","stopPropagation","stopImmediatePropagation","preventDefault","_c","_d","_e","cacheTarget","currentEle","getElementById","targetDataset","detail","currentTarget","_f","_g","_h","cacheCurrentTarget","doc","targetElement","createEvent","domEv","eventsBatch","getEventCBResult","eventHandler","_detail","dispatch","isExist","catchMove","FormElement","Performance","recorder","stop","time","perf","findCustomWrapper","dataPathArr","currentData","customWrapper","splitedPath","TaroRootElement","updatePayloads","updateCallbacks","pendingUpdate","toUpperCase","performUpdate","initRender","setDataMark","resetPaths","shift","normalUpdate","customWrapperMap","found","customWrapperCount","isNeedNormalUpdate","updateArrLen","executeTime","flushUpdateCallback","setData","enqueueUpdateCallback","copies","TaroText","_dict","findReg","plusReg","replaceCharMap","replacer","appendTo","dict","addEach","decodeURIComponent","encodeURIComponent","URLSearchParams","pairs","getAll","thisArg","getOwnPropertyNames","toJSON","WeakMap","_TaroURL_hash","_TaroURL_hostname","_TaroURL_pathname","_TaroURL_port","_TaroURL_protocol","_TaroURL_search","TaroURL","createObjectURL","revokeObjectURL","base","parseResult","parseUrlBase","hash","hostname","pathname","port","protocol","search","host","parseUrl","HEAD_REG","temp","href","searchParams","_toRaw","URL","PATTERN","matches","VALID_URL","fullUrl","parsedBase","AnchorElement","willSetAttr","TransferElement","dataName","isTransferElement","TaroDocument","controlledComponent","createElementNS","_svgNS","querySelector","querySelectorAll","createComment","textnode","defaultView","createDocument","documentCreateElement","head","app","container","documentElement","document$1","getComputedStyle","RuntimeCache","cache","identifier","_TaroHistory_instances","_TaroHistory_location","_TaroHistory_stack","_TaroHistory_cur","_TaroHistory_window","_TaroHistory_reset","cache$1","TaroHistory","location","on","title","INIT","RESTORE","pageId","RECOVER","DESTORY","go","delta","isNumber","targetIdx","min","max","trigger","back","forward","pushState","replaceState","WeakSet","History","router","page","_TaroLocation_instances","_TaroLocation_url","_TaroLocation_noCheckUrl","_TaroLocation_window","_TaroLocation_reset","_TaroLocation_getPreValue","_TaroLocation_rollBack","_TaroLocation_recordHistory","_TaroLocation_checkUrlChange","INIT_URL","TaroLocation","lastHash","generateFullUrl","lastHref","REG","preValue","xVal","reload","params","searchArr","searchStr","Location","machine","arch","engine","msg","nav","navigator","appCodeName","appName","appVersion","cookieEnabled","mimeTypes","onLine","platform","plugins","product","productSub","userAgent","vendor","vendorSub","loadTime","performance","getTime","_raf","requestAnimationFrame","_now","nextTime","_caf","cancelAnimationFrame","seed","TaroWindow","globalProperties","global","getOwnPropertySymbols","property","history","initEvent","_location","_history","off","window$1","runtime_esm_location","runtime_esm_history","SVGElement","addLeadingSlash","hasBasename","stripBasename","stripTrailing","stripSuffix","suffix","getHomePage","basename","customRoutes","entryPagePath","routePath","entries","getCurrentPage","routerMode","pagePath","instances","injectPageInstance","inst","getPageInstance","removePageInstance","safeExecute","lifecycle","instance","func","stringify","getPath","stamp","getOnReadyEventKey","getOnShowEventKey","getOnHideEventKey","createPageConfig","component","pageName","pageConfig","ONLOAD","ONUNLOAD","ONREADY","ONSHOW","ONHIDE","LIFECYCLES","SIDE_EFFECT_LIFECYCLES","pageElement","unmounting","prepareMountList","setCurrentRouter","$taroPath","route","__route__","$taroParams","onReady","onShow","onHide","exitState","loadResolver","hasLoaded","uniqueOptions","$taroTimestamp","mount","unmount","called","getOpenerEventChannel","EventChannel","pageChannel","isDefer","eh","createComponentConfig","componentName","componentElement","ATTACHED","DETACHED","pageIdCache","getPageId","$taroInstances","methods","createRecursiveComponentConfig","isCustomWrapper","lifeCycles","componentId","addGlobalClass","virtualHost","TIMEOUT","beginTime","timerFunc","next","handleArrayFindPolyfill","predicate","kValue","handleArrayIncludesPolyfill","searchElement","fromIndex","abs","handleIntersectionObserverPolyfill","IntersectionObserverEntry","intersectionRatio","handleIntersectionObserverObjectPolyfill","entry","rootBounds","intersectionRect","getEmptyRect","isIntersecting","targetRect","targetArea","intersectionArea","IntersectionObserver","_checkForIntersections","THROTTLE_TIMEOUT","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","margin","unit","POLL_INTERVAL","USE_MUTATION_OBSERVER","isTargetAlreadyObserved","_registerInstance","_monitorIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","opt_threshold","opt_rootMargin","marginString","margins","parseFloat","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","_hasCrossedThreshold","display","getParentNode","atRoot","parentRect","parentComputedStyle","overflow","computeRectIntersection","top","left","right","clientWidth","bottom","clientHeight","_expandRectByRootMargin","rect","newRect","oldRatio","newRatio","containsDeep","opt_useCapture","attachEvent","detatchEvent","rect1","rect2","assignedSlot","handleObjectAssignPolyfill","to","nextSource","nextKey","handleObjectEntriesPolyfill","handleObjectDefinePropertyPolyfill","convertToDescriptor","hasProperty","d","descs","handlePolyfill","SUPPORT_TARO_POLYFILL","DEFAULT_EMPTY_ARRAY","NO_DEFAULT_VALUE","DEFAULT_TRUE","DEFAULT_FALSE","touchEvents","bindTouchStart","bindTouchMove","bindTouchEnd","bindTouchCancel","bindLongTap","animation","bindAnimationStart","bindAnimationIteration","bindAnimationEnd","bindTransitionEnd","singleQuote","View","Icon","MapComp","longitude","latitude","scale","markers","covers","polyline","circles","controls","bindMarkerTap","bindControlTap","bindCalloutTap","bindUpdated","Progress","percent","activeColor","backgroundColor","active","RichText","Text","selectable","space","Button","plain","disabled","loading","bindagreeprivacyauthorization","Checkbox","checked","CheckboxGroup","bindChange","Form","bindSubmit","bindReset","Input","password","placeholder","maxlength","bindInput","bindFocus","bindBlur","bindConfirm","Label","for","Picker","mode","range","fields","bindCancel","bindColumnChange","PickerView","PickerViewColumn","Radio","RadioGroup","Slider","step","bindChanging","Switch","Textarea","fixed","bindLineChange","CoverImage","bindLoad","bindError","CoverView","MovableArea","MovableView","direction","inertia","damping","friction","bindScale","bindHTouchMove","bindVTouchMove","ScrollView","bindScrollToUpper","bindScrollToLower","bindScroll","Swiper","autoplay","duration","circular","vertical","bindTransition","bindAnimationFinish","SwiperItem","Navigator","bindSuccess","bindFail","bindComplete","Audio","loop","poster","author","bindPlay","bindPause","bindTimeUpdate","bindEnded","Camera","flash","bindStop","Image","LivePlayer","muted","orientation","bindStateChange","bindFullScreenChange","bindNetStatus","Video","bindWaiting","Canvas","Ad","bindClose","WebView","bindMessage","Block","SlotView","Slot","NativeSlot","Script","focusComponents","nestElements","PLATFORM_TYPE","PLATFORM_CONFIG_MAP","h5","harmony","mini","MINI","rn","quickapp","QUICK","callbacks","eventName","tail","_eventName","eventSplitter","calls","events","_events","PageEvts","exeList","emit","routeChannel","RouteEvts","addEvents","isBoolean","isBooleanStringLiteral","isWebPlatform","HOOK_TYPE","defaultMiniLifecycle","TaroHook","initial","TaroHooks","hookName","tapOneOrMany","SINGLE","rest","hook","WATERFALL","getMiniLifecycle","defaultConfig","getMiniLifecycleImpl","getLifecycle","modifyRecursiveComponentConfig","getPathIndex","getEventCenter","isBubbleEvents","BUBBLE_EVENTS","getSpecialNodes","onRemoveAttribute","batchedEventUpdates","mergePageInstance","modifyPageObject","createPullDownComponent","getDOMNode","modifyHydrateData","transferHydrateData","modifySetAttrPayload","modifyRmAttrPayload","onAddEvent","proxyToRaw","proxyObj","modifyMpEvent","MULTI","modifyMpEventImpl","injectNewStyleProperties","modifyTaroEvent","dispatchTaroEvent","dispatchTaroEventFinish","modifyTaroEventReturn","modifyDispatchEvent","initNativeApi","patchElement","modifyAddEventListener","modifyRemoveEventListener","EMPTY_ARR","box","unbox","camel","nextCap","toKebabCase","capitalize","hasOwn","reportIssue","queryToJson","dec","qp","_uniqueId","_loadTime","getUniqueKey","cacheData","cacheDataSet","cacheDataGet","delelteAfterGet","cacheDataHas","mergeInternalComponents","components","mapping","viewAttrs","extraList","StaticView","StaticImage","StaticText","PureView","CatchView","reg","isACommonly","isBCommonly","getPlatformType","configNameOrType","param","mergeReconciler","hostConfig","hooksForTest","nonsupport","api","setUniqueKeyToRoute","routerParamsPrivateKey","useDataCacheApis","hasMark","cacheKey","indent","needPromiseApis","getCanIUseWebp","getSystemInfoSync","platformLower","getNormalRequest","originSuccess","originFail","originComplete","complete","requestTask","equipTaskMethodsIntoPromise","processApis","patchNeedPromiseApis","_needPromiseApis","preserved","apis","isOnlyPromisify","modifyApis","originKey","transformMeta","transformResult","task","modifyAsyncResult","progress","onProgressUpdate","platformKey","handleSyncApis","equipCommonApis","canIUseWebp","getCurrentPages","getApp","requirePlugin","link","getAppInfo","taroVersion","TARO_VERSION","delayRef","createIntersectionObserver","promise","taskMethods","methodArgs","Shortcuts","promiseFinally","toError","Timeout","delay","rejectReason","wrap","_id","_delay","wrappedPromise","timer","race","factory","self","define","amd","createExporter","previous","exporter","extendStatics","setPrototypeOf","__","propertyIsEnumerable","decorators","Reflect","decorate","paramIndex","decorator","descriptorIn","contextIn","initializers","extraInitializers","accept","f","kind","descriptor","done","access","addInitializer","init","unshift","useValue","description","metadataKey","metadataValue","metadata","P","generator","adopt","fulfilled","rejected","label","sent","trys","ops","verb","throw","return","Symbol","iterator","op","ar","il","jl","pack","asyncIterator","q","awaitReturn","resume","settle","fulfill","cooked","__setModuleDefault","receiver","dispose","inner","asyncDispose","_SuppressedError","SuppressedError","suppressed","hasError","rec","__webpack_module_cache__","moduleId","cachedModule","threw","__webpack_modules__","definition","toStringTag","ab","__dirname","__webpack_exports__"],"sources":[".././build/connected.js",".././build/index.js",".././build/provider.js","../../bluetooth-traits/build/helpers.js","../../bluetooth-traits/build/index.js","../../bluetooth-traits/build/traits.js","../../bluetooth-traits/build/types.js","../../../frame/father/build/device/adapter/connected_device.js","../../../frame/father/build/device/adapter/index.js","../../../frame/father/build/device/adapter/types.js","../../../frame/father/build/father/PSDK.js","../../../frame/father/build/father/args/arg.js","../../../frame/father/build/father/args/common/easy.js","../../../frame/father/build/father/args/common/raw.js","../../../frame/father/build/father/args/index.js","../../../frame/father/build/father/command/index.js","../../../frame/father/build/father/command/print/command.js","../../../frame/father/build/father/command/print/command_clause.js","../../../frame/father/build/father/command/print/commander.js","../../../frame/father/build/father/command/single/appendat.js","../../../frame/father/build/father/command/single/binary_command.js","../../../frame/father/build/father/command/single/single_command.js","../../../frame/father/build/father/device/write_operation.js","../../../frame/father/build/father/index.js","../../../frame/father/build/father/types/hex_output.js","../../../frame/father/build/father/types/index.js","../../../frame/father/build/father/types/lifecycle.js","../../../frame/father/build/father/types/psdk_const.js","../../../frame/father/build/father/types/write.js","../../../frame/father/build/index.js","../../../frame/father/build/toolkit/base64.js","../../../frame/father/build/toolkit/byte.js","../../../frame/father/build/toolkit/checker.js","../../../frame/father/build/toolkit/gbk.js","../../../frame/father/build/toolkit/index.js","../../../frame/father/build/toolkit/pcollection.js","../../../frame/father/build/toolkit/pimage.js","../../../frame/father/build/toolkit/pvariable.js","../../../node_modules/@tarojs/api/dist/index.cjs.js","../../../node_modules/tslib/modules/index.js","../../../node_modules/@tarojs/runtime/dist/runtime.esm.js","../../../node_modules/@tarojs/shared/dist/index.cjs.js","../../../node_modules/@tarojs/taro/index.js","../../../node_modules/await-timeout/src/index.js","../../../node_modules/await-timeout/src/utils.js","../../../node_modules/tslib/tslib.js","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/compat","../webpack/startup"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TaroBleConnectedDevice = void 0;\nconst frame_father_1 = require(\"@psdk/frame-father\");\nconst await_timeout_1 = __importDefault(require(\"await-timeout\"));\nconst taro_1 = __importDefault(require(\"@tarojs/taro\"));\nclass TaroBleConnectedDevice {\n device;\n scpair;\n _connectionState;\n dataOfRead;\n notifyCallback;\n constructor(options) {\n this.device = options.device;\n this.scpair = options.scpair;\n this._connectionState = frame_father_1.ConnectionState.CONNECTED;\n this.dataOfRead = [];\n this.doListen();\n }\n notify(callback) {\n this.notifyCallback = callback;\n }\n doListen() {\n if (this.scpair.read == null)\n return;\n taro_1.default.onBLECharacteristicValueChange(async (value) => {\n // this.dataOfRead.push(value)\n if (this.notifyCallback) {\n await this.notifyCallback(value);\n }\n });\n taro_1.default.onBLEConnectionStateChange(value => {\n this._connectionState = value.connected ? frame_father_1.ConnectionState.CONNECTED : frame_father_1.ConnectionState.DISCONNECTED;\n });\n taro_1.default.notifyBLECharacteristicValueChange({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.read.uuid,\n state: true,\n success: result => console.log(result),\n // @ts-ignore\n fail: (e) => console.error(e),\n });\n }\n async realRead() {\n return new Promise((resolve, reject) => {\n if (this.scpair.read == null) {\n reject(`the connect device not support read operation: service id: [${this.scpair.service.uuid}]`);\n return;\n }\n taro_1.default.readBLECharacteristicValue({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.read.uuid,\n success: result => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n origin() {\n return this.device;\n }\n connectionState() {\n return this._connectionState;\n }\n deviceName() {\n return this.device.localName || this.device.name || 'NONE';\n }\n async disconnect() {\n return new Promise((resolve, reject) => {\n taro_1.default.closeBLEConnection({\n deviceId: this.device.deviceId,\n success: () => {\n this.device = null;\n this.scpair = null;\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n canRead() {\n return this.scpair.read != null;\n }\n async read(options) {\n if (this.dataOfRead.length > 0) {\n this.dataOfRead.splice(0, this.dataOfRead.length);\n }\n await this.realRead();\n const timeout = (options?.timeout ?? 5000);\n const startTime = +new Date();\n while (true) {\n const now = +new Date();\n if (now - startTime > timeout) {\n return new Uint8Array([]);\n }\n if (this.dataOfRead.length == 0) {\n await await_timeout_1.default.set(100);\n continue;\n }\n const data = this.dataOfRead.pop();\n const value = data.value;\n return new Uint8Array(value);\n }\n }\n async write(data) {\n return new Promise((resolve, reject) => {\n taro_1.default.writeBLECharacteristicValue({\n deviceId: this.device.deviceId,\n serviceId: this.scpair.service.uuid,\n characteristicId: this.scpair.write.uuid,\n // @ts-ignore\n value: data.buffer,\n success: result => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n flush() {\n this.dataOfRead.splice(0, this.dataOfRead.length);\n }\n}\nexports.TaroBleConnectedDevice = TaroBleConnectedDevice;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./connected\"), exports);\n__exportStar(require(\"./provider\"), exports);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TaroBleBluetooth = void 0;\nconst device_bluetooth_traits_1 = require(\"@psdk/device-bluetooth-traits\");\nconst frame_father_1 = require(\"@psdk/frame-father\");\nconst await_timeout_1 = __importDefault(require(\"await-timeout\"));\nconst connected_1 = require(\"./connected\");\nconst taro_1 = __importDefault(require(\"@tarojs/taro\"));\nclass TaroBleBluetooth extends device_bluetooth_traits_1.Jluetooth {\n options;\n discoveredCallback;\n connectedDevice;\n constructor(options) {\n super();\n this.options = options;\n this.onBluetoothDeviceFound();\n }\n isConnected() {\n if (!this.connectedDevice)\n return false;\n return this.connectedDevice.connectionState() === frame_father_1.ConnectionState.CONNECTED;\n }\n async bluetoothAdapterState() {\n return new Promise((resolve, reject) => {\n taro_1.default.getBluetoothAdapterState({\n success: (r) => resolve(r),\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n async connect(device, options) {\n if (this.isConnected()) {\n if (!(options?.autoSwitchDevice ?? false)) {\n return this.connectedDevice;\n }\n await this.connectedDevice.disconnect();\n }\n const origin = device.origin;\n await this.createBLEConnection({ deviceId: origin.deviceId, timeout: options?.timeout, });\n await await_timeout_1.default.set(500);\n const services = await this.getBLEDeviceServices({ deviceId: origin.deviceId });\n const scpair = await this.findSCPair({\n deviceId: origin.deviceId,\n services,\n });\n if (!scpair) {\n return Promise.reject(`Can not get write characteristic by device: ${device.name}`);\n }\n this.connectedDevice = new connected_1.TaroBleConnectedDevice({\n device: origin,\n scpair,\n });\n await this.stopDiscovery();\n return Promise.resolve(this.connectedDevice);\n }\n discovered(callback) {\n this.discoveredCallback = callback;\n }\n async startDiscovery() {\n await this.requestLocation();\n await this.closeBluetoothAdapter();\n await await_timeout_1.default.set(300);\n await this.openBluetoothAdapter();\n const state = await this.bluetoothAdapterState();\n if (!state.available) {\n await await_timeout_1.default.set(500);\n }\n if (state.discovering) {\n await this.stopDiscovery();\n await await_timeout_1.default.set(500);\n }\n return new Promise((resolve, reject) => {\n taro_1.default.startBluetoothDevicesDiscovery({\n // services: this.allowServices,\n allowDuplicatesKey: false,\n interval: 0,\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n // complete: () => resolve(),\n });\n });\n }\n async stopDiscovery() {\n return new Promise((resolve, reject) => {\n taro_1.default.stopBluetoothDevicesDiscovery({\n success: (result) => resolve(result),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n // ### inner function\n async openBluetoothAdapter() {\n return new Promise((resolve, reject) => {\n taro_1.default.openBluetoothAdapter({\n success: (ret) => {\n if (ret.errMsg && ret.errMsg.indexOf('ok') == -1) {\n reject(ret);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n async closeBluetoothAdapter() {\n return new Promise((resolve, reject) => {\n taro_1.default.closeBluetoothAdapter({\n success: (ret) => {\n if (ret.errMsg && ret.errMsg.indexOf('ok') == -1) {\n reject(ret);\n return;\n }\n resolve();\n },\n // @ts-ignore\n fail: (e) => reject(e)\n });\n });\n }\n onBluetoothDeviceFound() {\n taro_1.default.onBluetoothDeviceFound(async (result) => {\n const foundDevices = result.devices;\n if (!foundDevices.length) {\n return;\n }\n const devices = foundDevices\n .filter(item => {\n const name = item.name || item.localName;\n if (name)\n return true;\n return this.options?.allowNoName ?? true;\n })\n .map(item => new device_bluetooth_traits_1.JluetoothDevice({\n origin: item,\n name: item.name || item.localName,\n deviceId: item.deviceId,\n }));\n if (!devices.length) {\n return;\n }\n if (this.discoveredCallback) {\n await this.discoveredCallback(devices);\n }\n });\n }\n async createBLEConnection(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.createBLEConnection({\n deviceId: options.deviceId,\n timeout: options.timeout,\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async getBLEDeviceServices(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.getBLEDeviceServices({\n deviceId: options.deviceId,\n success: (result) => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve(result.services);\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async getBLEDeviceCharacteristics(options) {\n return new Promise((resolve, reject) => {\n taro_1.default.getBLEDeviceCharacteristics({\n deviceId: options.deviceId,\n serviceId: options.serviceId,\n success: (result) => {\n if (result.errMsg.indexOf('ok') == -1) {\n reject(result.errMsg);\n return;\n }\n resolve(result.characteristics);\n },\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async requestLocation() {\n return new Promise((resolve, reject) => {\n // Taro.authorize({\n // scope: 'scope.userLocation',\n // success: () => resolve(),\n // // @ts-ignore\n // fail: (e) => reject(e),\n // });\n taro_1.default.getLocation({\n success: () => resolve(),\n // @ts-ignore\n fail: (e) => reject(e),\n });\n });\n }\n async findSCPair(options) {\n // fill data\n const _characteristicsMap = new Map();\n for (const service of options.services) {\n const characteristics = await this.getBLEDeviceCharacteristics({\n deviceId: options.deviceId,\n serviceId: service.uuid,\n });\n _characteristicsMap.set(service.uuid, characteristics);\n }\n // use special first\n if (this.options?.allowedWriteCharacteristic && this.options?.allowedReadCharacteristic) {\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n let writeCharacteristic = null;\n let readCharacteristic = null;\n for (const characteristic of characteristics) {\n if (this.options?.allowedWriteCharacteristic.toLowerCase() == characteristic.uuid.toLowerCase()) {\n writeCharacteristic = characteristic;\n }\n }\n for (const characteristic of characteristics) {\n if (this.options?.allowedReadCharacteristic.toLowerCase() == characteristic.uuid.toLowerCase()) {\n readCharacteristic = characteristic;\n }\n }\n if (writeCharacteristic != null && readCharacteristic != null) {\n return {\n service,\n write: writeCharacteristic,\n read: readCharacteristic,\n };\n }\n }\n }\n // choose best characteristic\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n // let readCharacteristic: GetBLEDeviceCharacteristicsSuccessData;\n // let writeCharacteristic: GetBLEDeviceCharacteristicsSuccessData;\n const pickedCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write && (properties.notify);\n });\n if (pickedCharacteristic) {\n return {\n service,\n write: pickedCharacteristic,\n read: pickedCharacteristic,\n };\n }\n }\n if (this.options?.allowDetectDifferentCharacteristic ?? true) {\n // choose different characteristic with write and read properties\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n const writeCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write;\n });\n const readCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n return (properties.notify);\n });\n if (writeCharacteristic && readCharacteristic) {\n return {\n service,\n write: writeCharacteristic,\n read: readCharacteristic,\n };\n }\n }\n }\n else {\n // only write\n for (const service of options.services) {\n if (!device_bluetooth_traits_1.TBluetoothHelpers.isAllowServices(service.uuid, this.options?.allowServices)) {\n continue;\n }\n const characteristics = _characteristicsMap.get(service.uuid);\n const writeCharacteristic = characteristics.find(characteristic => {\n const properties = characteristic.properties;\n // @ts-ignore\n return properties.write;\n });\n if (writeCharacteristic) {\n return {\n service,\n write: writeCharacteristic,\n };\n }\n }\n }\n }\n}\nexports.TaroBleBluetooth = TaroBleBluetooth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TBluetoothHelpers = void 0;\nconst types_1 = require(\"./types\");\nclass TBluetoothHelpers {\n static isAllowService(serviceUUID, allowService) {\n return this.isAllowServices(serviceUUID, allowService && [allowService]);\n }\n static isAllowServices(serviceUUID, allowServices) {\n if (allowServices == undefined)\n return true;\n for (const allowService of allowServices) {\n const rule = allowService.rule ?? types_1.AllowRule.EQUALS;\n switch (rule) {\n case types_1.AllowRule.EQUALS: {\n if (serviceUUID == allowService.uuid)\n return true;\n break;\n }\n case types_1.AllowRule.START_WITH: {\n if (serviceUUID.startsWith(allowService.uuid))\n return true;\n break;\n }\n case types_1.AllowRule.END_WITH: {\n if (serviceUUID.endsWith(allowService.uuid))\n return true;\n break;\n }\n case types_1.AllowRule.REGEX: {\n if (new RegExp(allowService.uuid).test(serviceUUID))\n return true;\n break;\n }\n }\n }\n }\n}\nexports.TBluetoothHelpers = TBluetoothHelpers;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./traits\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Jluetooth = void 0;\n/**\n * absctract bluetooth class\n */\nclass Jluetooth {\n async isDiscovery() {\n const state = await this.bluetoothAdapterState();\n return state.discovering || false;\n }\n}\nexports.Jluetooth = Jluetooth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AllowRule = exports.JluetoothDevice = void 0;\nclass JluetoothDevice {\n origin;\n name;\n deviceId;\n constructor(options) {\n this.origin = options.origin;\n this.name = options.name;\n this.deviceId = options.deviceId;\n }\n}\nexports.JluetoothDevice = JluetoothDevice;\nvar AllowRule;\n(function (AllowRule) {\n AllowRule[\"EQUALS\"] = \"EQUALS\";\n AllowRule[\"START_WITH\"] = \"START_WITH\";\n AllowRule[\"END_WITH\"] = \"END_WITH\";\n AllowRule[\"REGEX\"] = \"REGEX\";\n})(AllowRule || (exports.AllowRule = AllowRule = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FakeConnectedDevice = void 0;\n/**\n * Connected device\n */\nconst types_1 = require(\"./types\");\nconst father_1 = require(\"../../father\");\n/**\n * Fake connected device\n */\nclass FakeConnectedDevice {\n origin() {\n return \"FAKE-DEVICE\";\n }\n connectionState() {\n return types_1.ConnectionState.CONNECTED;\n }\n deviceName() {\n return \"FAKE-DEVICE\";\n }\n async disconnect() {\n }\n canRead() {\n return true;\n }\n async read(options) {\n return father_1.PsdkConst.EMPTY_BYTES;\n }\n async write(data) {\n console.log('WRITE: ', data);\n }\n flush() {\n }\n}\nexports.FakeConnectedDevice = FakeConnectedDevice;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./connected_device\"), exports);\n__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadOptions = exports.WroteReporter = exports.ConnectionState = void 0;\n/**\n * Connection state\n */\nvar ConnectionState;\n(function (ConnectionState) {\n /**\n * connected\n */\n ConnectionState[\"CONNECTED\"] = \"CONNECTED\";\n /**\n * disconnect\n */\n ConnectionState[\"DISCONNECTED\"] = \"DISCONNECTED\";\n})(ConnectionState || (exports.ConnectionState = ConnectionState = {}));\n/**\n * Wrote reporter\n */\nclass WroteReporter {\n ok;\n binary;\n controlExit;\n exception;\n constructor(\n /**\n * Wrote is ok\n */\n ok, \n /**\n * Wrote data\n */\n binary, \n /**\n * control exit\n */\n controlExit, \n /**\n * exception\n */\n exception) {\n this.ok = ok;\n this.binary = binary;\n this.controlExit = controlExit;\n this.exception = exception;\n }\n}\nexports.WroteReporter = WroteReporter;\n/**\n * Read options\n */\nclass ReadOptions {\n timeout;\n constructor(options) {\n this.timeout = options?.timeout;\n }\n}\nexports.ReadOptions = ReadOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PSDK = void 0;\nconst types_1 = require(\"./types\");\nconst write_operation_1 = require(\"./device/write_operation\");\nclass PSDK {\n /**\n * sdk version\n */\n sversion() {\n return '0.2.67';\n }\n /**\n * authors\n */\n authors() {\n return types_1.PsdkConst.DEF_AUTHORS;\n }\n /**\n * Push raw command\n * @param raw raw\n */\n raw(raw) {\n this.commander().pushArg(raw);\n return this;\n }\n /**\n * Put variable\n * @param name name\n * @param value value\n */\n variable(name, value) {\n this.commander().variable(name, value);\n return this;\n }\n /**\n * get command\n */\n command() {\n return this.commander().command();\n }\n /**\n * Clear command\n */\n clear() {\n this.commander().clear();\n return this;\n }\n /**\n * Write data to device\n */\n async write(options) {\n const connectedDevice = this.connectedDevice();\n if (!connectedDevice)\n throw Error('It\\'s seems you missing to set connectedDevice');\n options = options ?? types_1.WriteOptions.def();\n const command = this.command();\n const binary = command.binary();\n const operation = new write_operation_1.DataWriteOperation(options, binary, connectedDevice);\n const reporter = await operation.write();\n this.clear();\n return reporter;\n }\n /**\n * Newline command\n */\n newline() {\n this.commander().newline();\n return this;\n }\n /**\n * Push command\n * @param command\n */\n push(command) {\n this.commander().pushArg(command);\n return this;\n }\n}\nexports.PSDK = PSDK;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicArg = void 0;\nconst types_1 = require(\"../types\");\nclass BasicArg {\n newline() {\n return types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n }\n}\nexports.BasicArg = BasicArg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OnlyTextHeaderArg = exports.OnlyBinaryHeaderArg = exports.EasyArg = void 0;\nconst arg_1 = require(\"../arg\");\nconst command_1 = require(\"../../command\");\n/**\n * Easy argument abstract class\n */\nclass EasyArg extends arg_1.BasicArg {\n prependClauses;\n appendClauses;\n constructor() {\n super();\n this.prependClauses = [];\n this.appendClauses = [];\n }\n /**\n * Append another argument for this clause\n * @param arg\n */\n append(arg) {\n this.appendClauses.push(...arg.clauses());\n return this;\n }\n /**\n * Prepend another argument for this clause\n * @param arg\n */\n prepend(arg) {\n this.prependClauses.push(...arg.clauses());\n return this;\n }\n /**\n * Get current command clauses\n */\n clauses() {\n const clause = this.clause();\n const currentClauses = [];\n if (clause.type !== command_1.ClauseType.NONE) {\n currentClauses.push(clause);\n if (this.newline()) {\n currentClauses.push(command_1.CommandClause.newline());\n }\n }\n return [\n ...this.prependClauses,\n ...currentClauses,\n ...this.appendClauses,\n ];\n }\n clear() {\n this.prependClauses.splice(0, this.prependClauses.length);\n this.appendClauses.splice(0, this.appendClauses.length);\n }\n}\nexports.EasyArg = EasyArg;\nclass OnlyBinaryHeaderArg extends EasyArg {\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n return command_1.CommandClause.binary(this.header());\n }\n newline() {\n return false;\n }\n}\nexports.OnlyBinaryHeaderArg = OnlyBinaryHeaderArg;\nclass OnlyTextHeaderArg extends EasyArg {\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n return command_1.CommandClause.text(this.header());\n }\n}\nexports.OnlyTextHeaderArg = OnlyTextHeaderArg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RawMode = exports.Raw = void 0;\nconst easy_1 = require(\"./easy\");\nconst command_1 = require(\"../../command\");\nconst types_1 = require(\"../../types\");\nclass Raw extends easy_1.EasyArg {\n _mode;\n _text;\n _charset;\n _binary;\n _newline = types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n constructor() {\n super();\n }\n static text(text, options) {\n const raw = new Raw();\n raw._mode = RawMode.TEXT;\n raw._text = text;\n raw._charset = options?.charset ?? types_1.PsdkConst.DEF_CHARSET;\n raw._newline = options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n return raw;\n }\n static binary(binary, options) {\n const raw = new Raw();\n raw._mode = RawMode.BINARY;\n raw._binary = binary;\n raw._charset = options?.charset ?? types_1.PsdkConst.DEF_CHARSET;\n raw._newline = options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE;\n return raw;\n }\n append(arg) {\n super.append(arg);\n return this;\n }\n prepend(arg) {\n super.prepend(arg);\n return this;\n }\n clause() {\n let clause;\n switch (this._mode) {\n case RawMode.TEXT:\n clause = command_1.CommandClause.text(this._text, this._charset);\n break;\n case RawMode.BINARY:\n clause = command_1.CommandClause.binary(this._binary);\n break;\n default:\n clause = command_1.CommandClause.none();\n break;\n }\n return clause;\n }\n header() {\n return types_1.PsdkConst.EMPTY_BYTES;\n }\n newline() {\n return this._newline;\n }\n}\nexports.Raw = Raw;\nvar RawMode;\n(function (RawMode) {\n RawMode[\"BINARY\"] = \"BINARY\";\n RawMode[\"TEXT\"] = \"TEXT\";\n})(RawMode || (exports.RawMode = RawMode = {}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./arg\"), exports);\n__exportStar(require(\"./common/easy\"), exports);\n__exportStar(require(\"./common/raw\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./print/command\"), exports);\n__exportStar(require(\"./print/commander\"), exports);\n__exportStar(require(\"./print/command_clause\"), exports);\n__exportStar(require(\"./single/appendat\"), exports);\n__exportStar(require(\"./single/binary_command\"), exports);\n__exportStar(require(\"./single/single_command\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultCommand = exports.BasicCommand = void 0;\n/**\n * All printer sdk command interface\n */\nconst types_1 = require(\"../../types\");\nconst base64_1 = require(\"../../../toolkit/base64\");\nconst command_clause_1 = require(\"./command_clause\");\nconst toolkit_1 = require(\"../../../toolkit\");\nclass BasicCommand {\n base64() {\n return base64_1.Base64.fromUint8Array(this.binary());\n }\n}\nexports.BasicCommand = BasicCommand;\nclass DefaultCommand extends BasicCommand {\n bytes;\n constructor(clauses, variable) {\n super();\n let bytes = [];\n for (const clause of clauses) {\n switch (clause.type) {\n case command_clause_1.ClauseType.TEXT:\n const t = toolkit_1.PVariableKit.replace(clause.text, variable);\n //# use gbk encoding\n // const t_buffer = iconv.encode(t, clause.charset ?? PsdkConst.DEF_CHARSET);\n const t_buffer = toolkit_1.FastGBK.encode(t);\n const t_binary = Array.prototype.slice.call(t_buffer, 0);\n bytes = bytes.concat(t_binary);\n //# use utf8 encoding\n // const t_binary = ByteKit.textToU8A(t)\n // const array = Array.from(t_binary)\n // bytes.push(...array);\n break;\n case command_clause_1.ClauseType.NEWLINE:\n case command_clause_1.ClauseType.BINARY:\n const b = Array.from(clause.binary ?? types_1.PsdkConst.EMPTY_BYTES);\n bytes = bytes.concat(b);\n break;\n }\n }\n this.bytes = new Uint8Array(bytes);\n }\n binary() {\n return this.bytes;\n }\n hex(output) {\n return (output ?? types_1.HexOutput.def()).format(this.binary());\n }\n string(charset) {\n // const buffer = Array.from(this.binary());\n // @ts-ignore\n // return iconv.decode(buffer, charset ?? PsdkConst.DEF_CHARSET);\n // return gbkDecoder.decode(this.binary());\n return toolkit_1.FastGBK.decode(this.binary());\n }\n}\nexports.DefaultCommand = DefaultCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CommandClause = exports.ClauseType = void 0;\nconst types_1 = require(\"../../types\");\nvar ClauseType;\n(function (ClauseType) {\n ClauseType[\"TEXT\"] = \"TEXT\";\n ClauseType[\"BINARY\"] = \"BINARY\";\n ClauseType[\"NEWLINE\"] = \"NEWLINE\";\n ClauseType[\"NONE\"] = \"NONE\";\n})(ClauseType || (exports.ClauseType = ClauseType = {}));\nclass CommandClause {\n /**\n * Clause type\n * @private\n */\n _type;\n /**\n * Text command\n * @private\n */\n _text;\n /**\n * Charset\n * @private\n */\n _charset;\n /**\n * Binary command\n * @private\n */\n _binary;\n constructor(type, text, charset, binary) {\n this._type = type;\n this._text = text;\n this._charset = charset;\n this._binary = binary;\n }\n static text(command, charset = types_1.PsdkConst.DEF_CHARSET) {\n return new CommandClause(ClauseType.TEXT, command, charset, undefined);\n }\n static binary(binary) {\n return new CommandClause(ClauseType.BINARY, undefined, undefined, binary);\n }\n static newline() {\n return new CommandClause(ClauseType.NEWLINE, undefined, undefined, types_1.PsdkConst.DEF_NEWLINE_BINARY);\n }\n static none() {\n return new CommandClause(ClauseType.NONE, undefined, undefined, undefined);\n }\n get type() {\n return this._type;\n }\n get text() {\n return this._text;\n }\n get charset() {\n return this._charset;\n }\n get binary() {\n return this._binary;\n }\n}\nexports.CommandClause = CommandClause;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Commander = void 0;\nconst command_clause_1 = require(\"./command_clause\");\nconst types_1 = require(\"../../types\");\nconst command_1 = require(\"./command\");\n/**\n * Command builder\n */\nclass Commander {\n /**\n * Command clauses\n * @private\n */\n clauses;\n _variable;\n constructor() {\n this.clauses = [];\n this._variable = new Map();\n }\n /**\n * Make a commander\n */\n static make() {\n return new Commander();\n }\n /**\n * Push a text command\n * @param command command\n * @param options Options: { newline: newline, charset: charset }\n */\n pushText(command, options) {\n if (command.startsWith(types_1.PsdkConst.CRLF)) {\n command = command.substring(2);\n }\n const clause = command_clause_1.CommandClause.text(command, options?.charset ?? types_1.PsdkConst.DEF_CHARSET);\n return this.pushClause(clause, options?.newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE);\n }\n /**\n * Push binary command\n * @param command Command\n * @param newline Add new line for this command\n */\n pushBinary(command, newline) {\n const clause = command_clause_1.CommandClause.binary(command);\n return this.pushClause(clause, newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE);\n }\n /**\n * Push clause\n * @param clause Command clause object\n * @param newline Add new line for this command\n */\n pushClause(clause, newline) {\n this.clauses.push(clause);\n if (newline ?? types_1.PsdkConst.DEF_ENABLED_NEWLINE) {\n this.clauses.push(command_clause_1.CommandClause.newline());\n }\n return this;\n }\n /**\n * Push multiple clause\n * @param clauses\n */\n pushClauses(clauses) {\n clauses.forEach(item => this.pushClause(item, false));\n return this;\n }\n /**\n * Push arg\n * @param arg arg\n */\n pushArg(arg) {\n this.pushClauses(arg.clauses());\n return this;\n }\n /**\n * Add newline\n */\n newline() {\n const clause = command_clause_1.CommandClause.newline();\n return this.pushClause(clause, false);\n }\n /**\n * Add a new variable\n * @param name name\n * @param value value\n */\n variable(name, value) {\n this._variable.set(name, value);\n return this;\n }\n /**\n * Clear all commands\n */\n clear() {\n this.clauses.splice(0, this.clauses.length);\n this._variable.clear();\n return this;\n }\n /**\n * Get command\n */\n command() {\n return new command_1.DefaultCommand(this.clauses, this._variable);\n }\n}\nexports.Commander = Commander;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextAppendat = exports.Appendat = void 0;\nconst toolkit_1 = require(\"../../../toolkit\");\nclass Appendat {\n _argument;\n _condition;\n _callback;\n constructor(argument, condition, callback) {\n this._argument = argument;\n this._condition = condition;\n this._callback = callback;\n }\n get condition() {\n return this._condition;\n }\n callback(callback) {\n this._callback = callback;\n return this;\n }\n quote() {\n return this;\n }\n argument() {\n if (!toolkit_1.Checker.truthy(this._callback))\n return this._argument;\n if (!toolkit_1.Checker.truthy(this._argument))\n return undefined;\n return this._callback.callback(this._argument);\n }\n}\nexports.Appendat = Appendat;\nclass TextAppendat extends Appendat {\n _quote;\n constructor(argument, condition, callback) {\n super(argument, condition ?? true, callback);\n this._quote = false;\n }\n /**\n * Create new text appendat\n * @param argument argument\n * @param options options: { condition: condition for this arg, callback: value callback }\n */\n static create(argument, options) {\n return new TextAppendat(argument, options?.condition ?? true, new class {\n callback(data) {\n const cb = options?.callback;\n if (cb) {\n return cb(data);\n }\n return data;\n }\n });\n }\n callback(callback) {\n super.callback(callback);\n return this;\n }\n quote() {\n this._quote = true;\n return this;\n }\n argument() {\n const arg = super.argument();\n if (!toolkit_1.Checker.truthy(arg))\n return this._quote ? '\"\"' : '';\n if (this._quote) {\n return `\"${arg}\"`;\n }\n return arg;\n }\n}\nexports.TextAppendat = TextAppendat;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryCommand = void 0;\nconst command_clause_1 = require(\"../print/command_clause\");\n// import * as iconv from 'iconv-lite';\nconst toolkit_1 = require(\"../../../toolkit\");\nclass BinaryCommand {\n binary;\n constructor(binary) {\n this.binary = binary ?? [];\n }\n static make() {\n return new BinaryCommand();\n }\n static with(u8a) {\n const b = Array.from(u8a);\n return new BinaryCommand(b);\n }\n appendNumber(num) {\n this.binary.push(num);\n return this;\n }\n appendText(text, charset) {\n // const encoding = (charset ?? PsdkConst.DEF_CHARSET).toLowerCase();\n // const binary = iconv.encode(text, encoding);\n const binary = toolkit_1.FastGBK.encode(text);\n this.binary.push(...binary);\n return this;\n }\n appendU8A(u8a) {\n const b = Array.from(u8a);\n this.binary = this.binary.concat(b);\n return this;\n }\n output() {\n return new Uint8Array(this.binary);\n }\n clause() {\n const output = this.output();\n return command_clause_1.CommandClause.binary(output);\n }\n}\nexports.BinaryCommand = BinaryCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TSPLCommand = exports.CPCLCommand = exports.SingleCommand = void 0;\n/**\n * Single Command\n */\nconst appendat_1 = require(\"./appendat\");\nconst command_clause_1 = require(\"../print/command_clause\");\nconst toolkit_1 = require(\"../../../toolkit/\");\nclass SingleCommand {\n /**\n * arguments\n * @private\n */\n _arguments;\n _symbolAfterHeader;\n _symbolBetweenArguments;\n _header;\n _charset;\n constructor(symbolAfterHeader, symbolBetweenArguments, charset) {\n this._arguments = [];\n this._symbolAfterHeader = symbolAfterHeader;\n this._symbolBetweenArguments = symbolBetweenArguments;\n this._charset = charset;\n }\n get getHeader() {\n return this._header;\n }\n get symbolAfterHeader() {\n return this._symbolAfterHeader;\n }\n get symbolBetweenArguments() {\n return this._symbolBetweenArguments;\n }\n header(header) {\n this._header = header;\n return this;\n }\n get charset() {\n return this._charset;\n }\n append(appendat) {\n if (!appendat.condition)\n return this;\n const argument = appendat.argument();\n if (!toolkit_1.Checker.truthy(argument))\n return this;\n this._arguments.push(argument);\n return this;\n }\n arguments() {\n return this._arguments;\n }\n}\nexports.SingleCommand = SingleCommand;\nclass BasicStringSingleCommand extends SingleCommand {\n constructor(symbolAfterHeader, symbolBetweenArguments, charset) {\n super(symbolAfterHeader, symbolBetweenArguments, charset);\n }\n append(appendat) {\n const argument = appendat.argument();\n if (!toolkit_1.Checker.truthy(argument))\n return this;\n super.append(appendat);\n return this;\n }\n appendText(text) {\n return this.append(appendat_1.TextAppendat.create(text ?? '', {}));\n }\n appendNumber(num) {\n if (isNaN(num))\n return this;\n return this.append(appendat_1.TextAppendat.create((num ?? '').toString(), {}));\n }\n output() {\n let ret = '';\n if (toolkit_1.Checker.truthy(super.getHeader)) {\n ret += super.getHeader;\n ret += super.symbolAfterHeader;\n }\n const args = super.arguments();\n const len = args.length;\n let seq = 0;\n for (const arg of args) {\n seq += 1;\n if (!toolkit_1.Checker.truthy(arg))\n continue;\n ret += arg;\n if (seq < len) {\n ret += super.symbolBetweenArguments;\n }\n }\n return ret;\n }\n clause() {\n const output = this.output();\n if (!toolkit_1.Checker.truthy(output)) {\n return command_clause_1.CommandClause.none();\n }\n return command_clause_1.CommandClause.text(output, super.charset);\n }\n}\nclass CPCLCommand extends BasicStringSingleCommand {\n constructor(header, charset) {\n super(' ', ' ', charset);\n super.header(header);\n }\n static with(header, charset) {\n return new CPCLCommand(header, charset);\n }\n append(appendat) {\n super.append(appendat);\n return this;\n }\n appendText(text) {\n super.appendText(text);\n return this;\n }\n appendNumber(num) {\n super.appendNumber(num);\n return this;\n }\n}\nexports.CPCLCommand = CPCLCommand;\nclass TSPLCommand extends BasicStringSingleCommand {\n constructor(header, charset) {\n super(' ', ',', charset);\n super.header(header);\n }\n static with(header, charset) {\n return new TSPLCommand(header, charset);\n }\n append(appendat) {\n super.append(appendat);\n return this;\n }\n appendText(text) {\n super.appendText(text);\n return this;\n }\n appendNumber(num) {\n super.appendNumber(num);\n return this;\n }\n}\nexports.TSPLCommand = TSPLCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataWriteOperation = void 0;\n/**\n * Data write operation\n */\nconst types_1 = require(\"../types\");\nconst adapter_1 = require(\"../../device/adapter\");\nconst toolkit_1 = require(\"../../toolkit\");\nclass DataWriteOperation {\n options;\n binary;\n connectedDevice;\n constructor(\n /**\n * Write options\n * @private\n */\n options, \n /**\n * Write binary\n * @private\n */\n binary, \n /**\n * Connected device\n * @private\n */\n connectedDevice) {\n this.options = options;\n this.binary = binary;\n this.connectedDevice = connectedDevice;\n }\n async write() {\n if (!this.options.enableChunkWrite) {\n const reporter = await this.writData(this.binary);\n this.doCallback(reporter, this.binary, 1, 1);\n return reporter;\n }\n const writeData = Array.from(this.binary);\n const parts = toolkit_1.CollectionKit.split(writeData, this.options.chunkSize);\n const totalTimes = parts.length;\n let currentTimes = 0;\n for (const part of parts) {\n currentTimes += 1;\n const partBinary = new Uint8Array(part);\n const reporter = await this.writData(partBinary);\n const control = this.doCallback(reporter, partBinary, currentTimes, totalTimes);\n if (control == types_1.WriteControl.STOP) {\n reporter.controlExit = true;\n return reporter;\n }\n if (!reporter.ok) {\n return reporter;\n }\n }\n return new adapter_1.WroteReporter(true, this.binary, false);\n }\n doCallback(reporter, binary, currentTimes, totalTimes) {\n const callback = this.options.callback;\n if (!callback)\n return types_1.WriteControl.CONTINUE;\n const dataWrote = new types_1.DataWrote(binary, currentTimes, totalTimes);\n if (reporter.ok) {\n return callback.success(dataWrote);\n }\n if (callback.failed) {\n callback.failed(dataWrote, reporter.exception);\n }\n else {\n console.log('no custom failed callback, full exception: ', reporter.exception);\n }\n return types_1.WriteControl.STOP;\n }\n async writData(binary) {\n try {\n await this.connectedDevice.write(binary);\n return new adapter_1.WroteReporter(true, binary, false);\n }\n catch (e) {\n return new adapter_1.WroteReporter(false, binary, false, e);\n }\n }\n}\nexports.DataWriteOperation = DataWriteOperation;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./args\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./command\"), exports);\n__exportStar(require(\"./PSDK\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HexOutput = void 0;\nconst DEF_MAX_LENGTH_OF_LINE = 32;\n/**\n * hex output\n */\nclass HexOutput {\n enableFormat;\n spacing;\n maxLengthOfLine;\n // private format: boolean;\n //\n // private spacing: boolean;\n //\n // private maxLengthOfLine: number = DEF_MAX_LENGTH_OF_LINE;\n constructor(\n /**\n * Is format\n */\n enableFormat, \n /**\n * Enable spacing between byte\n */\n spacing, \n /**\n * Max length of line\n */\n maxLengthOfLine = DEF_MAX_LENGTH_OF_LINE) {\n this.enableFormat = enableFormat;\n this.spacing = spacing;\n this.maxLengthOfLine = maxLengthOfLine;\n }\n static def() {\n return new HexOutput(false, false, DEF_MAX_LENGTH_OF_LINE);\n }\n static simple(format = true) {\n return new HexOutput(format, true, DEF_MAX_LENGTH_OF_LINE);\n }\n static formatWithMaxLength(maxLengthOfLine) {\n return new HexOutput(true, true, maxLengthOfLine);\n }\n /**\n * Format binary\n */\n format(binary) {\n // const hex = toHex(binary);\n const hex = Array.from(binary, function (byte) {\n return ('0' + (byte & 0xFF).toString(16)).slice(-2);\n }).join('');\n if (!this.enableFormat) {\n return hex;\n }\n let fmted = '';\n const textLength = hex.length;\n let lineIndex = 0;\n for (let ix = 0; ix < textLength; ix++) {\n const seq = ix + 1;\n const v = hex[ix];\n fmted += v;\n if (seq % 2 == 0 && this.spacing) {\n if (seq < textLength) {\n if (lineIndex + 1 < this.maxLengthOfLine) {\n fmted += ' ';\n }\n lineIndex += 1;\n }\n }\n if (lineIndex >= this.maxLengthOfLine) {\n fmted += '\\n';\n lineIndex = 0;\n }\n }\n return fmted;\n }\n}\nexports.HexOutput = HexOutput;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./psdk_const\"), exports);\n__exportStar(require(\"./hex_output\"), exports);\n__exportStar(require(\"./write\"), exports);\n__exportStar(require(\"./lifecycle\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lifecycle = void 0;\nclass Lifecycle {\n connectedDevice;\n constructor(\n /**\n * Connected device\n */\n connectedDevice) {\n this.connectedDevice = connectedDevice;\n }\n}\nexports.Lifecycle = Lifecycle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PsdkConst = void 0;\nconst toolkit_1 = require(\"../../toolkit\");\nconst CR = '\\r';\nconst LF = '\\n';\nconst CRLF = `${CR}${LF}`;\n/**\n * constants\n */\nexports.PsdkConst = {\n DEF_CHARSET: 'gbk',\n CR,\n LF,\n CRLF,\n QUOTE: '\"',\n DEF_NEWLINE_BINARY: toolkit_1.ByteKit.textToU8A(CRLF),\n DEF_AUTHORS: ['fewensa <osuni@protonmail.com>'],\n DEF_ENABLED_NEWLINE: true,\n DEF_WRITE_CHUNK_SIZE: 512,\n EMPTY_BYTES: new Uint8Array([]),\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteControl = exports.DataWrote = exports.DataWrite = exports.IDataWriteCallback = exports.WriteOptions = void 0;\nconst psdk_const_1 = require(\"./psdk_const\");\n/**\n * Write to device options\n */\nclass WriteOptions {\n enableChunkWrite;\n chunkSize;\n callback;\n constructor(\n /**\n * Enable data splitting\n */\n enableChunkWrite = true, \n /**\n * Part size\n */\n chunkSize = psdk_const_1.PsdkConst.DEF_WRITE_CHUNK_SIZE, \n /**\n * Data write callback\n */\n callback) {\n this.enableChunkWrite = enableChunkWrite;\n this.chunkSize = chunkSize;\n this.callback = callback;\n }\n static def() {\n return new WriteOptions(true, psdk_const_1.PsdkConst.DEF_WRITE_CHUNK_SIZE, undefined);\n }\n}\nexports.WriteOptions = WriteOptions;\n/**\n * Data write callback\n */\nclass IDataWriteCallback {\n failed(data, exception) {\n console.error(`Write data failed: ${exception.message}`);\n }\n}\nexports.IDataWriteCallback = IDataWriteCallback;\n/**\n * Data write\n */\nclass DataWrite {\n binary;\n currentTimes;\n totalTimes;\n constructor(\n /**\n * Wrote binary\n */\n binary, \n /**\n * Write current times\n */\n currentTimes, \n /**\n * Write total times\n */\n totalTimes) {\n this.binary = binary;\n this.currentTimes = currentTimes;\n this.totalTimes = totalTimes;\n }\n}\nexports.DataWrite = DataWrite;\n/**\n * Data wrote\n */\nclass DataWrote extends DataWrite {\n}\nexports.DataWrote = DataWrote;\n/**\n * Write control\n */\nvar WriteControl;\n(function (WriteControl) {\n WriteControl[\"CONTINUE\"] = \"CONTINUE\";\n WriteControl[\"STOP\"] = \"STOP\";\n})(WriteControl || (exports.WriteControl = WriteControl = {}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./device/adapter\"), exports);\n__exportStar(require(\"./father\"), exports);\n__exportStar(require(\"./toolkit\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = exports.extendBuiltins = exports.extendUint8Array = exports.extendString = exports.toUint8Array = exports.fromUint8Array = exports.isValid = exports.decode = exports.btou = exports.encodeURL = exports.encodeURI = exports.encode = exports.utob = exports.toBase64 = exports.fromBase64 = exports.btoaPolyfill = exports.btoa = exports.atobPolyfill = exports.atob = exports.VERSION = exports.version = void 0;\n// https://github.com/dankogai/js-base64/blob/main/base64.ts\n/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\nexports.version = version;\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nexports.VERSION = VERSION;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\nexports.btoaPolyfill = btoaPolyfill;\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nexports.btoa = _btoa;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\nexports.fromUint8Array = fromUint8Array;\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\nexports.utob = utob;\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\nexports.toBase64 = encode;\nexports.encode = encode;\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\nexports.encodeURI = encodeURI;\nexports.encodeURL = encodeURI;\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\nexports.btou = btou;\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\nexports.atobPolyfill = atobPolyfill;\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\nexports.atob = _atob;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\nexports.toUint8Array = toUint8Array;\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\nexports.fromBase64 = decode;\nexports.decode = decode;\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\nexports.isValid = isValid;\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\nexports.extendString = extendString;\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\nexports.extendUint8Array = extendUint8Array;\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nexports.extendBuiltins = extendBuiltins;\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\nexports.Base64 = gBase64;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ByteKit = void 0;\nconst checker_1 = require(\"./checker\");\n/**\n * Byte kit\n */\nclass ByteKit {\n /**\n * Text to byte\n * @param text text\n */\n static textToU8A(text) {\n if (!checker_1.Checker.truthy(text))\n return new Uint8Array([]);\n let bytes = [];\n let len, c;\n len = text.length;\n for (let i = 0; i < len; i++) {\n c = text.charCodeAt(i);\n if (c >= 0x010000 && c <= 0x10FFFF) {\n bytes.push(((c >> 18) & 0x07) | 0xF0);\n bytes.push(((c >> 12) & 0x3F) | 0x80);\n bytes.push(((c >> 6) & 0x3F) | 0x80);\n bytes.push((c & 0x3F) | 0x80);\n }\n else if (c >= 0x000800 && c <= 0x00FFFF) {\n bytes.push(((c >> 12) & 0x0F) | 0xE0);\n bytes.push(((c >> 6) & 0x3F) | 0x80);\n bytes.push((c & 0x3F) | 0x80);\n }\n else if (c >= 0x000080 && c <= 0x0007FF) {\n bytes.push(((c >> 6) & 0x1F) | 0xC0);\n bytes.push((c & 0x3F) | 0x80);\n }\n else {\n bytes.push(c & 0xFF);\n }\n }\n return new Uint8Array(bytes);\n }\n}\nexports.ByteKit = ByteKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = void 0;\nclass Checker {\n static truthy(value) {\n if (value === undefined)\n return false;\n if (value === null)\n return false;\n if (value === '')\n return false;\n const t = typeof value;\n switch (t) {\n case 'number':\n if (isNaN(value))\n return false;\n break;\n case 'bigint':\n default:\n return true;\n }\n }\n static empty(value) {\n if (!Checker.truthy(value))\n return true;\n return value.length === 0;\n }\n}\nexports.Checker = Checker;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastGBK = void 0;\n// https://github.com/EtherDream/str2gbk/blob/main/index.js\nlet table;\nfunction initGbkTable() {\n // https://en.wikipedia.org/wiki/GBK_(character_encoding)#Encoding\n const ranges = [\n [0xA1, 0xA9, 0xA1, 0xFE],\n [0xB0, 0xF7, 0xA1, 0xFE],\n [0x81, 0xA0, 0x40, 0xFE],\n [0xAA, 0xFE, 0x40, 0xA0],\n [0xA8, 0xA9, 0x40, 0xA0],\n [0xAA, 0xAF, 0xA1, 0xFE],\n [0xF8, 0xFE, 0xA1, 0xFE],\n [0xA1, 0xA7, 0x40, 0xA0],\n ];\n const codes = new Uint16Array(23940);\n let i = 0;\n for (const [b1Begin, b1End, b2Begin, b2End] of ranges) {\n for (let b2 = b2Begin; b2 <= b2End; b2++) {\n if (b2 !== 0x7F) {\n for (let b1 = b1Begin; b1 <= b1End; b1++) {\n codes[i++] = b2 << 8 | b1;\n }\n }\n }\n }\n table = new Uint16Array(65536);\n table.fill(0xFFFF);\n const str = new TextDecoder('gbk').decode(codes);\n for (let i = 0; i < str.length; i++) {\n table[str.charCodeAt(i)] = codes[i];\n }\n}\n// const NodeJsBufAlloc = typeof Buffer === 'function' && Buffer.allocUnsafe\n//\n// const defaultOnAlloc = NodeJsBufAlloc\n// ? (len) => NodeJsBufAlloc(len)\n// : (len) => new Uint8Array(len)\nconst defaultOnAlloc = (len) => new Uint8Array(len);\nconst defaultOnError = () => 63; // '?'\nconst gbkDecoder = new TextDecoder('gbk');\nclass FastGBK {\n static decode(buffer) {\n return gbkDecoder.decode(buffer);\n }\n static encode(text, options) {\n if (!table) {\n initGbkTable();\n }\n const onAlloc = options?.onAlloc ?? defaultOnAlloc;\n const onError = options?.onError ?? defaultOnError;\n const buf = onAlloc(text.length * 2);\n let n = 0;\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code < 0x80) {\n buf[n++] = code;\n continue;\n }\n const gbk = table[code];\n if (gbk !== 0xFFFF) {\n buf[n++] = gbk;\n buf[n++] = gbk >> 8;\n }\n else if (code === 8364) {\n // 8364 == '€'.charCodeAt(0)\n // Code Page 936 has a single-byte euro sign at 0x80\n buf[n++] = 0x80;\n }\n else {\n const ret = onError(i, text);\n if (ret === -1) {\n break;\n }\n if (ret > 0xFF) {\n buf[n++] = ret;\n buf[n++] = ret >> 8;\n }\n else {\n buf[n++] = ret;\n }\n }\n }\n return buf.subarray(0, n);\n }\n}\nexports.FastGBK = FastGBK;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./byte\"), exports);\n__exportStar(require(\"./pvariable\"), exports);\n__exportStar(require(\"./pcollection\"), exports);\n__exportStar(require(\"./pimage\"), exports);\n__exportStar(require(\"./checker\"), exports);\n__exportStar(require(\"./gbk\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CollectionKit = void 0;\nconst checker_1 = require(\"./checker\");\n/**\n * Collection kit\n */\nclass CollectionKit {\n /**\n * Split array\n *\n * @param colls collections\n * @param size The size of result array\n * @return List\n */\n static split(colls, size) {\n if (checker_1.Checker.empty(colls))\n return [];\n if (size <= 0)\n throw new Error('The size must > 0');\n const rets = [];\n let items = [];\n for (const coll of colls) {\n items.push(coll);\n if (size == items.length) {\n rets.push(items);\n items = [];\n }\n }\n if (0 != items.length)\n rets.push(items);\n return rets;\n }\n /**\n * Part array\n *\n * @param colls collections\n * @param parts Part length\n * @return List\n */\n static parts(colls, parts) {\n if (checker_1.Checker.empty(colls)) {\n return [];\n }\n if (parts <= 0)\n throw new Error('The parts length must > 0');\n if (colls.length <= parts) {\n return [colls];\n }\n const rets = [];\n let items = [];\n const pnum = Math.floor(colls.length / parts);\n for (const coll of colls) {\n items.push(coll);\n if (items.length == pnum) {\n rets.push(items);\n if (rets.length < parts)\n items = [];\n }\n }\n return rets;\n }\n}\nexports.CollectionKit = CollectionKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageKit = void 0;\n/**\n * Image kit\n */\nclass ImageKit {\n /**\n * process image\n * @param canvas canvas\n * @param width width\n * @param height height\n */\n static processImage(canvas, width, height) {\n const ctx = canvas.getContext('2d');\n let eWidth = Math.floor((width % 8 === 0) ? (width / 8) : (width / 8 + 1));\n let currentHeight = 0;\n let index = 0;\n const area = height * eWidth;\n const bytes = []; // the bytes length is equals `area`\n for (let b1 = 0; b1 < area; b1++) {\n bytes[b1] = 0;\n }\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n while (currentHeight < height) {\n // let rowData = []; // the row data length is image height\n let eightBitIndex = 0;\n for (let x = 0; x < width; x++) {\n eightBitIndex++;\n if (eightBitIndex > 8) {\n eightBitIndex = 1;\n index++;\n }\n const n = 1 << 8 - eightBitIndex;\n // const pixel = ctx.getImageData(x, currentHeight, 1, 1);\n const pixels = ImageKit.fastExtractPixel(imgData, x, currentHeight, 1, 1);\n const pixel = pixels[0];\n // const rgba = pixel.data;\n const red = pixel[0];\n const green = pixel[1];\n const blue = pixel[2];\n if ((red + green + blue) / 3 < 128) {\n bytes[index] = (bytes[index] | n);\n }\n }\n index = eWidth * (currentHeight + 1);\n currentHeight += 1;\n }\n return new Uint8Array(bytes);\n }\n static fastExtractPixel(imageData, x, y, w, h) {\n let i, j;\n let result = [];\n let r, g, b, a;\n const data = imageData.data;\n for (j = 0; j < h; j++) {\n let idx = (x + (y + j) * imageData.width) * 4; // get left most byte index for row at y + j\n for (i = 0; i < w; i++) {\n r = data[idx++];\n g = data[idx++];\n b = data[idx++];\n a = data[idx++];\n // do the processing\n result.push([r, g, b, a]);\n }\n }\n return result;\n }\n}\nexports.ImageKit = ImageKit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PVariableKit = void 0;\nconst checker_1 = require(\"./checker\");\nclass PVariableKit {\n /**\n * Replace variable\n * @param text text\n * @param variable variable\n */\n static replace(text, variable) {\n if (!checker_1.Checker.truthy(text))\n return text;\n if (!checker_1.Checker.truthy(variable))\n return text;\n if (text.indexOf('{{') < 0 && text.indexOf('}}') < 0)\n return text;\n const regx = /[\\\\]?\\{\\{(?<varx>.*?)}}/gm;\n const tmpMark = '__THIS_IS_MAGIC_MARK_FOR_HACK_REGEX_MATCH__';\n while (true) {\n const match = regx.exec(text);\n if (match == null)\n break;\n const originDefined = match[0];\n const originVarx = originDefined.replace('{{', '')\n .replace('}}', '');\n const varName = originVarx.trim();\n const varValue = variable.get(varName) ?? '';\n if (originDefined.startsWith('\\\\')) {\n const tmpDefined = originDefined.replace('\\\\{{', tmpMark);\n text = text.replace(originDefined, tmpDefined);\n continue;\n }\n text = text.replace(originDefined, varValue);\n }\n text = text.replace(new RegExp(tmpMark, 'g'), '{{');\n return text;\n }\n}\nexports.PVariableKit = PVariableKit;\n","'use strict';\n\nvar runtime = require('@tarojs/runtime');\nvar shared = require('@tarojs/shared');\n\nconst ENV_TYPE = {\n WEAPP: 'WEAPP',\n SWAN: 'SWAN',\n ALIPAY: 'ALIPAY',\n TT: 'TT',\n QQ: 'QQ',\n JD: 'JD',\n WEB: 'WEB',\n RN: 'RN',\n HARMONY: 'HARMONY',\n QUICKAPP: 'QUICKAPP',\n HARMONYHYBRID: 'HARMONYHYBRID',\n};\nfunction getEnv() {\n if (process.env.TARO_ENV === 'weapp') {\n return ENV_TYPE.WEAPP;\n }\n else if (process.env.TARO_ENV === 'alipay') {\n return ENV_TYPE.ALIPAY;\n }\n else if (process.env.TARO_ENV === 'swan') {\n return ENV_TYPE.SWAN;\n }\n else if (process.env.TARO_ENV === 'tt') {\n return ENV_TYPE.TT;\n }\n else if (process.env.TARO_ENV === 'jd') {\n return ENV_TYPE.JD;\n }\n else if (process.env.TARO_ENV === 'qq') {\n return ENV_TYPE.QQ;\n }\n else if (process.env.TARO_ENV === 'harmony-hybrid') {\n return ENV_TYPE.HARMONYHYBRID;\n }\n else if (process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web') {\n return ENV_TYPE.WEB;\n }\n else if (process.env.TARO_ENV === 'rn') {\n return ENV_TYPE.RN;\n }\n else if (process.env.TARO_ENV === 'harmony' || process.env.TARO_PLATFORM === 'harmony') {\n return ENV_TYPE.HARMONY;\n }\n else if (process.env.TARO_ENV === 'quickapp') {\n return ENV_TYPE.QUICKAPP;\n }\n else {\n return process.env.TARO_ENV || 'Unknown';\n }\n}\n\nclass Chain {\n constructor(requestParams, interceptors, index) {\n this.index = index || 0;\n this.requestParams = requestParams || {};\n this.interceptors = interceptors || [];\n }\n proceed(requestParams = {}) {\n this.requestParams = requestParams;\n if (this.index >= this.interceptors.length) {\n throw new Error('chain 参数错误, 请勿直接修改 request.chain');\n }\n const nextInterceptor = this._getNextInterceptor();\n const nextChain = this._getNextChain();\n const p = nextInterceptor(nextChain);\n const res = p.catch(err => Promise.reject(err));\n Object.keys(p).forEach(k => shared.isFunction(p[k]) && (res[k] = p[k]));\n return res;\n }\n _getNextInterceptor() {\n return this.interceptors[this.index];\n }\n _getNextChain() {\n return new Chain(this.requestParams, this.interceptors, this.index + 1);\n }\n}\n\nclass Link {\n constructor(interceptor) {\n this.taroInterceptor = interceptor;\n this.chain = new Chain();\n }\n request(requestParams) {\n const chain = this.chain;\n const taroInterceptor = this.taroInterceptor;\n chain.interceptors = chain.interceptors\n .filter(interceptor => interceptor !== taroInterceptor)\n .concat(taroInterceptor);\n return chain.proceed(Object.assign({}, requestParams));\n }\n addInterceptor(interceptor) {\n this.chain.interceptors.push(interceptor);\n }\n cleanInterceptors() {\n this.chain = new Chain();\n }\n}\nfunction interceptorify(promiseifyApi) {\n return new Link(function (chain) {\n return promiseifyApi(chain.requestParams);\n });\n}\n\nfunction timeoutInterceptor(chain) {\n const requestParams = chain.requestParams;\n let p;\n const res = new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n clearTimeout(timeout);\n reject(new Error('网络链接超时,请稍后再试!'));\n }, (requestParams && requestParams.timeout) || 60000);\n p = chain.proceed(requestParams);\n p\n .then(res => {\n if (!timeout)\n return;\n clearTimeout(timeout);\n resolve(res);\n })\n .catch(err => {\n timeout && clearTimeout(timeout);\n reject(err);\n });\n });\n // @ts-ignore\n if (!shared.isUndefined(p) && shared.isFunction(p.abort))\n res.abort = p.abort;\n return res;\n}\nfunction logInterceptor(chain) {\n const requestParams = chain.requestParams;\n const { method, data, url } = requestParams;\n // eslint-disable-next-line no-console\n console.log(`http ${method || 'GET'} --> ${url} data: `, data);\n const p = chain.proceed(requestParams);\n const res = p\n .then(res => {\n // eslint-disable-next-line no-console\n console.log(`http <-- ${url} result:`, res);\n return res;\n });\n // @ts-ignore\n if (shared.isFunction(p.abort))\n res.abort = p.abort;\n return res;\n}\n\nvar interceptors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n logInterceptor: logInterceptor,\n timeoutInterceptor: timeoutInterceptor\n});\n\nfunction Behavior(options) {\n return options;\n}\nfunction getPreload(current) {\n return function (key, val) {\n current.preloadData = shared.isObject(key)\n ? key\n : {\n [key]: val\n };\n };\n}\nconst defaultDesignWidth = 750;\nconst defaultDesignRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2\n};\nconst defaultBaseFontSize = 20;\nconst defaultUnitPrecision = 5;\nconst defaultTargetUnit = 'rpx';\nfunction getInitPxTransform(taro) {\n return function (config) {\n const { designWidth = defaultDesignWidth, deviceRatio = defaultDesignRatio, baseFontSize = defaultBaseFontSize, targetUnit = defaultTargetUnit, unitPrecision = defaultUnitPrecision, } = config;\n taro.config = taro.config || {};\n taro.config.designWidth = designWidth;\n taro.config.deviceRatio = deviceRatio;\n taro.config.baseFontSize = baseFontSize;\n taro.config.targetUnit = targetUnit;\n taro.config.unitPrecision = unitPrecision;\n };\n}\nfunction getPxTransform(taro) {\n return function (size) {\n const config = taro.config || {};\n const baseFontSize = config.baseFontSize;\n const deviceRatio = config.deviceRatio || defaultDesignRatio;\n const designWidth = ((input = 0) => shared.isFunction(config.designWidth)\n ? config.designWidth(input)\n : config.designWidth || defaultDesignWidth)(size);\n if (!(designWidth in deviceRatio)) {\n throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`);\n }\n const targetUnit = config.targetUnit || defaultTargetUnit;\n const unitPrecision = config.unitPrecision || defaultUnitPrecision;\n const formatSize = ~~size;\n let rootValue = 1 / deviceRatio[designWidth];\n switch (targetUnit) {\n case 'rem':\n rootValue *= baseFontSize * 2;\n break;\n case 'px':\n rootValue *= 2;\n break;\n }\n let val = formatSize / rootValue;\n if (unitPrecision >= 0 && unitPrecision <= 100) {\n val = Number(val.toFixed(unitPrecision));\n }\n return val + targetUnit;\n };\n}\n\n/* eslint-disable camelcase */\nconst Taro = {\n Behavior,\n getEnv,\n ENV_TYPE,\n Link,\n interceptors,\n Current: runtime.Current,\n getCurrentInstance: runtime.getCurrentInstance,\n options: runtime.options,\n nextTick: runtime.nextTick,\n eventCenter: runtime.eventCenter,\n Events: runtime.Events,\n getInitPxTransform,\n interceptorify\n};\nTaro.initPxTransform = getInitPxTransform(Taro);\nTaro.preload = getPreload(runtime.Current);\nTaro.pxTransform = getPxTransform(Taro);\n\nmodule.exports = Taro;\n","import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\nexport default tslib;\r\n","import { noop, isFunction, getComponentsAlias as getComponentsAlias$1, internalComponents, EMPTY_OBJ, hooks, toCamelCase, isObject, warn, isArray, ensure, isNull, isUndefined, toDashed, isString, controlledComponent, Events, isNumber, EventChannel } from '@tarojs/shared';\nexport { Events, hooks } from '@tarojs/shared';\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';\n\nconst PROPERTY_THRESHOLD = 2046;\nconst TARO_RUNTIME = 'Taro runtime';\nconst HOOKS_APP_ID = 'taro-app';\nconst SET_DATA = '小程序 setData';\nconst PAGE_INIT = '页面初始化';\nconst ROOT_STR = 'root';\nconst HTML = 'html';\nconst HEAD = 'head';\nconst BODY = 'body';\nconst APP = 'app';\nconst CONTAINER = 'container';\nconst DOCUMENT_ELEMENT_NAME = '#document';\nconst DOCUMENT_FRAGMENT = 'document-fragment';\nconst ID = 'id';\nconst UID = 'uid';\nconst CLASS = 'class';\nconst STYLE = 'style';\nconst FOCUS = 'focus';\nconst VIEW = 'view';\nconst STATIC_VIEW = 'static-view';\nconst PURE_VIEW = 'pure-view';\nconst PROPS = 'props';\nconst DATASET = 'dataset';\nconst OBJECT = 'object';\nconst VALUE = 'value';\nconst INPUT = 'input';\nconst CHANGE = 'change';\nconst CUSTOM_WRAPPER = 'custom-wrapper';\nconst TARGET = 'target';\nconst CURRENT_TARGET = 'currentTarget';\nconst TYPE = 'type';\nconst CONFIRM = 'confirm';\nconst TIME_STAMP = 'timeStamp';\nconst KEY_CODE = 'keyCode';\nconst TOUCHMOVE = 'touchmove';\nconst DATE = 'Date';\nconst SET_TIMEOUT = 'setTimeout';\nconst COMPILE_MODE = 'compileMode';\nconst CATCHMOVE = 'catchMove';\nconst CATCH_VIEW = 'catch-view';\nconst COMMENT = 'comment';\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\nconst OPTIONS = 'options';\nconst EXTERNAL_CLASSES = 'externalClasses';\nconst EVENT_CALLBACK_RESULT = 'e_result';\nconst BEHAVIORS = 'behaviors';\nconst A = 'a';\n/**\n * 页面上下文切换时的行为\n */\nvar CONTEXT_ACTIONS;\n(function (CONTEXT_ACTIONS) {\n CONTEXT_ACTIONS[\"INIT\"] = \"0\";\n CONTEXT_ACTIONS[\"RESTORE\"] = \"1\";\n CONTEXT_ACTIONS[\"RECOVER\"] = \"2\";\n CONTEXT_ACTIONS[\"DESTORY\"] = \"3\";\n})(CONTEXT_ACTIONS || (CONTEXT_ACTIONS = {}));\n\nconst observers = [];\n/**\n * The MutationObserver provides the ability\n * to watch for changes being made to the DOM tree.\n * It will invoke a specified callback function\n * when DOM changes occur.\n * @see https://dom.spec.whatwg.org/#mutationobserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nclass MutationObserverImpl {\n constructor(callback) {\n this.records = [];\n this.callback = callback;\n }\n /**\n * Configures the MutationObserver\n * to begin receiving notifications\n * through its callback function\n * when DOM changes matching the given options occur.\n *\n * Options matching is to be implemented.\n */\n observe(target, options) {\n this.disconnect();\n this.target = target;\n this.options = options || {};\n observers.push(this);\n }\n /**\n * Stop the MutationObserver instance\n * from receiving further notifications\n * until and unless observe() is called again.\n */\n disconnect() {\n this.target = null;\n const index = observers.indexOf(this);\n if (index >= 0) {\n observers.splice(index, 1);\n }\n }\n /**\n * Removes all pending notifications\n * from the MutationObserver's notification queue\n * and returns them in a new Array of MutationRecord objects.\n */\n takeRecords() {\n return this.records.splice(0, this.records.length);\n }\n}\n/** Match two TaroNodes by sid. */\nconst sidMatches = (observerTarget, target) => {\n return !!observerTarget && observerTarget.sid === (target === null || target === void 0 ? void 0 : target.sid);\n};\nconst isConcerned = (record, options) => {\n const { characterData, characterDataOldValue, attributes, attributeOldValue, childList } = options;\n switch (record.type) {\n case \"characterData\" /* MutationRecordType.CHARACTER_DATA */:\n if (characterData) {\n if (!characterDataOldValue)\n record.oldValue = null;\n return true;\n }\n return false;\n case \"attributes\" /* MutationRecordType.ATTRIBUTES */:\n if (attributes) {\n if (!attributeOldValue)\n record.oldValue = null;\n return true;\n }\n return false;\n case \"childList\" /* MutationRecordType.CHILD_LIST */:\n if (childList) {\n return true;\n }\n return false;\n }\n};\nlet pendingMuatations = false;\nfunction logMutation(observer, record) {\n observer.records.push(record);\n if (!pendingMuatations) {\n pendingMuatations = true;\n Promise\n .resolve()\n .then(() => {\n pendingMuatations = false;\n observers.forEach(observer => {\n return observer.callback(observer.takeRecords());\n });\n });\n }\n}\nfunction recordMutation(record) {\n observers.forEach(observer => {\n const { options } = observer;\n for (let t = record.target; t; t = t.parentNode) {\n if (sidMatches(observer.target, t) && isConcerned(record, options)) {\n logMutation(observer, record);\n break;\n }\n if (!options.subtree)\n break;\n }\n });\n}\n\nlet MutationObserver$1 = class MutationObserver {\n constructor(callback) {\n if (ENABLE_MUTATION_OBSERVER) {\n this.core = new MutationObserverImpl(callback);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Taro Warning] 若要使用 MutationObserver,请在 Taro 编译配置中设置 \\'mini.runtime.enableMutationObserver: true\\'');\n }\n this.core = {\n observe: noop,\n disconnect: noop,\n takeRecords: noop\n };\n }\n }\n observe(...args) {\n this.core.observe(...args);\n }\n disconnect() {\n this.core.disconnect();\n }\n takeRecords() {\n return this.core.takeRecords();\n }\n static record(record) {\n recordMutation(record);\n }\n};\n\nfunction throttle(fn, threshold = 250, scope) {\n let lastTime = 0;\n let deferTimer;\n return function (...args) {\n const context = scope || this;\n const now = Date.now();\n if (now - lastTime > threshold) {\n fn.apply(this, args);\n lastTime = now;\n }\n else {\n clearTimeout(deferTimer);\n deferTimer = setTimeout(() => {\n lastTime = now;\n fn.apply(context, args);\n }, threshold);\n }\n };\n}\n\nconst incrementId = () => {\n const chatCodes = [];\n // A-Z\n for (let i = 65; i <= 90; i++) {\n chatCodes.push(i);\n }\n // a-z\n for (let i = 97; i <= 122; i++) {\n chatCodes.push(i);\n }\n const chatCodesLen = chatCodes.length - 1;\n const list = [0, 0];\n return () => {\n const target = list.map(item => chatCodes[item]);\n const res = String.fromCharCode(...target);\n let tailIdx = list.length - 1;\n list[tailIdx]++;\n while (list[tailIdx] > chatCodesLen) {\n list[tailIdx] = 0;\n tailIdx = tailIdx - 1;\n if (tailIdx < 0) {\n list.push(0);\n break;\n }\n list[tailIdx]++;\n }\n return res;\n };\n};\nfunction isElement(node) {\n return node.nodeType === 1 /* NodeType.ELEMENT_NODE */;\n}\nfunction isText(node) {\n return node.nodeType === 3 /* NodeType.TEXT_NODE */;\n}\nfunction isComment(node) {\n return node.nodeName === COMMENT;\n}\nfunction isHasExtractProp(el) {\n const res = Object.keys(el.props).find(prop => {\n return !(/^(class|style|id)$/.test(prop) || prop.startsWith('data-'));\n });\n return Boolean(res);\n}\n/**\n * 往上寻找组件树直到 root,寻找是否有祖先组件绑定了同类型的事件\n * @param node 当前组件\n * @param type 事件类型\n */\nfunction isParentBinded(node, type) {\n var _a;\n while ((node = (node === null || node === void 0 ? void 0 : node.parentElement) || null)) {\n if (!node || node.nodeName === ROOT_STR || node.nodeName === 'root-portal') {\n return false;\n }\n else if ((_a = node.__handlers[type]) === null || _a === void 0 ? void 0 : _a.length) {\n return true;\n }\n }\n return false;\n}\nfunction shortcutAttr(key) {\n switch (key) {\n case STYLE:\n return \"st\" /* Shortcuts.Style */;\n case ID:\n return UID;\n case CLASS:\n return \"cl\" /* Shortcuts.Class */;\n default:\n return key;\n }\n}\nconst customWrapperCache = new Map();\nfunction extend(ctor, methodName, options) {\n if (isFunction(options)) {\n options = {\n value: options\n };\n }\n Object.defineProperty(ctor.prototype, methodName, Object.assign({ configurable: true, enumerable: true }, options));\n}\nlet componentsAlias$1;\nfunction getComponentsAlias() {\n if (!componentsAlias$1) {\n componentsAlias$1 = getComponentsAlias$1(internalComponents);\n }\n return componentsAlias$1;\n}\n\nclass ClassList {\n constructor(className, el) {\n this.tokenList = [];\n this.el = el;\n className.trim().split(/\\s+/).forEach(token => this.tokenList.push(token));\n }\n get value() {\n return this.toString();\n }\n get length() {\n return this.tokenList.length;\n }\n add() {\n let index = 0;\n let updated = false;\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n do {\n const token = tokens[index];\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token);\n updated = true;\n }\n } while (++index < length);\n if (updated) {\n this._update();\n }\n }\n remove() {\n let i = 0;\n let updated = false;\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n do {\n const token = tokens[i] + '';\n if (!this.checkTokenIsValid(token))\n continue;\n const index = tokenList.indexOf(token);\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1);\n updated = true;\n }\n } while (++i < length);\n if (updated) {\n this._update();\n }\n }\n contains(token) {\n if (!this.checkTokenIsValid(token))\n return false;\n return !!~this.tokenList.indexOf(token);\n }\n toggle(token, force) {\n const result = this.contains(token);\n const method = result ? force !== true && 'remove' : force !== false && 'add';\n if (method) {\n // @ts-ignore\n this[method](token);\n }\n if (force === true || force === false) {\n return force;\n }\n else {\n return !result;\n }\n }\n replace(token, replacement_token) {\n if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token))\n return;\n const index = this.tokenList.indexOf(token);\n if (~index) {\n this.tokenList.splice(index, 1, replacement_token);\n this._update();\n }\n }\n toString() {\n return this.tokenList.filter(v => v !== '').join(' ');\n }\n checkTokenIsValid(token) {\n if (token === '' || /\\s/.test(token))\n return false;\n return true;\n }\n _update() {\n this.el.className = this.value;\n }\n}\n\nclass EventSource extends Map {\n removeNode(child) {\n const { sid, uid } = child;\n this.delete(sid);\n if (uid !== sid && uid)\n this.delete(uid);\n }\n removeNodeTree(child) {\n this.removeNode(child);\n const { childNodes } = child;\n childNodes.forEach(node => this.removeNodeTree(node));\n }\n}\nconst eventSource = new EventSource();\n\nconst env = {\n window: process.env.TARO_PLATFORM === 'web' ? window : EMPTY_OBJ,\n document: process.env.TARO_PLATFORM === 'web' ? document : EMPTY_OBJ\n};\n\nlet SPECIAL_NODES;\nlet componentsAlias;\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nfunction hydrate(node) {\n var _a;\n // 初始化 componentsAlias\n componentsAlias || (componentsAlias = getComponentsAlias());\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES || (SPECIAL_NODES = hooks.call('getSpecialNodes'));\n const nodeName = node.nodeName;\n let compileModeName = null;\n if (isText(node)) {\n return {\n sid: node.sid,\n [\"v\" /* Shortcuts.Text */]: node.nodeValue,\n [\"nn\" /* Shortcuts.NodeName */]: ((_a = componentsAlias[nodeName]) === null || _a === void 0 ? void 0 : _a._num) || '8'\n };\n }\n const data = {\n [\"nn\" /* Shortcuts.NodeName */]: nodeName,\n sid: node.sid\n };\n if (node.uid !== node.sid) {\n data.uid = node.uid;\n }\n if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n data[\"nn\" /* Shortcuts.NodeName */] = `static-${nodeName}`;\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[\"nn\" /* Shortcuts.NodeName */] = PURE_VIEW;\n }\n }\n const { props } = node;\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop);\n if (!prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE) {\n data[propInCamelCase] = props[prop];\n }\n if (process.env.TARO_ENV !== 'swan' &&\n nodeName === VIEW &&\n propInCamelCase === CATCHMOVE &&\n props[prop] !== false) {\n data[\"nn\" /* Shortcuts.NodeName */] = CATCH_VIEW;\n }\n if (propInCamelCase === COMPILE_MODE) {\n compileModeName = props[prop];\n }\n }\n // Children\n data[\"cn\" /* Shortcuts.Childnodes */] = node.childNodes.filter(node => !isComment(node)).map(hydrate);\n if (node.className !== '') {\n data[\"cl\" /* Shortcuts.Class */] = node.className;\n }\n const cssText = node.cssText;\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[\"st\" /* Shortcuts.Style */] = cssText;\n }\n hooks.call('modifyHydrateData', data, node);\n const nn = data[\"nn\" /* Shortcuts.NodeName */];\n const componentAlias = componentsAlias[nn];\n if (componentAlias) {\n data[\"nn\" /* Shortcuts.NodeName */] = componentAlias._num;\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop];\n delete data[prop];\n }\n }\n }\n if (compileModeName !== null) {\n data[\"nn\" /* Shortcuts.NodeName */] = compileModeName;\n }\n const resData = hooks.call('transferHydrateData', data, node, componentAlias);\n return resData || data;\n}\n\nclass TaroEventTarget {\n constructor() {\n this.__handlers = {};\n }\n addEventListener(type, handler, options) {\n type = type.toLowerCase();\n hooks.call('onAddEvent', type, handler, options, this);\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.addEventListener('begin', handler, options);\n this.addEventListener('end', handler, options);\n return;\n }\n let isCapture = Boolean(options);\n let isOnce = false;\n if (isObject(options)) {\n isCapture = Boolean(options.capture);\n isOnce = Boolean(options.once);\n }\n if (isOnce) {\n const wrapper = function () {\n handler.apply(this, arguments); // this 指向 Element\n this.removeEventListener(type, wrapper);\n };\n this.addEventListener(type, wrapper, Object.assign(Object.assign({}, options), { once: false }));\n return;\n }\n process.env.NODE_ENV !== 'production' && warn(isCapture, 'Taro 暂未实现 event 的 capture 特性。');\n // 某些框架,如 PReact 有委托的机制,handler 始终是同一个函数\n // 这会导致多层停止冒泡失败:view -> view(handler.stop = false) -> view(handler.stop = true)\n // 这样解决:view -> view(handlerA.stop = false) -> view(handlerB.stop = false)\n // 因此每次绑定事件都新建一个函数,如果带来了性能问题,可以把这段逻辑抽取到 PReact 插件中。\n const oldHandler = handler;\n handler = function () {\n return oldHandler.apply(this, arguments); // this 指向 Element\n };\n handler.oldHandler = oldHandler;\n const handlers = this.__handlers[type];\n if (isArray(handlers)) {\n handlers.push(handler);\n }\n else {\n this.__handlers[type] = [handler];\n }\n }\n removeEventListener(type, handler) {\n type = type.toLowerCase();\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.removeEventListener('begin', handler);\n this.removeEventListener('end', handler);\n return;\n }\n if (!handler) {\n return;\n }\n const handlers = this.__handlers[type];\n if (!isArray(handlers)) {\n return;\n }\n const index = handlers.findIndex(item => {\n if (item === handler || item.oldHandler === handler)\n return true;\n });\n process.env.NODE_ENV !== 'production' && warn(index === -1, `事件: '${type}' 没有注册在 DOM 中,因此不会被移除。`);\n handlers.splice(index, 1);\n }\n isAnyEventBinded() {\n const handlers = this.__handlers;\n const isAnyEventBinded = Object.keys(handlers).find(key => handlers[key].length);\n return Boolean(isAnyEventBinded);\n }\n}\n\nconst CHILDNODES = \"cn\" /* Shortcuts.Childnodes */;\nconst nodeId = incrementId();\nclass TaroNode extends TaroEventTarget {\n constructor() {\n super();\n this.parentNode = null;\n this.childNodes = [];\n this.hydrate = (node) => () => hydrate(node);\n this.uid = '_' + nodeId(); // dom 节点 id,开发者可修改\n this.sid = this.uid; // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this);\n }\n updateChildNodes(isClean) {\n const cleanChildNodes = () => [];\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node));\n return childNodes.map(hydrate);\n };\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n });\n }\n updateSingleChild(index) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child))\n return;\n if (index && childIndex < index)\n return;\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n });\n });\n }\n get _root() {\n var _a;\n return ((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a._root) || null;\n }\n findIndex(refChild) {\n const index = this.childNodes.indexOf(refChild);\n ensure(index !== -1, 'The node to be replaced is not a child of this node.');\n return index;\n }\n get _path() {\n const parentNode = this.parentNode;\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node));\n const indexOfNode = list.indexOf(this);\n const index = hooks.call('getPathIndex', indexOfNode);\n return `${parentNode._path}.${CHILDNODES}.${index}`;\n }\n return '';\n }\n get nextSibling() {\n const parentNode = this.parentNode;\n return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) + 1]) || null;\n }\n get previousSibling() {\n const parentNode = this.parentNode;\n return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) - 1]) || null;\n }\n get parentElement() {\n const parentNode = this.parentNode;\n if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.nodeType) === 1 /* NodeType.ELEMENT_NODE */) {\n return parentNode;\n }\n return null;\n }\n get firstChild() {\n return this.childNodes[0] || null;\n }\n get lastChild() {\n const childNodes = this.childNodes;\n return childNodes[childNodes.length - 1] || null;\n }\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n set textContent(text) {\n const removedNodes = this.childNodes.slice();\n const addedNodes = [];\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false });\n }\n if (text === '') {\n this.updateChildNodes(true);\n }\n else {\n const newText = env.document.createTextNode(text);\n addedNodes.push(newText);\n this.appendChild(newText);\n this.updateChildNodes();\n }\n // @Todo: appendChild 会多触发一次\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n removedNodes,\n addedNodes\n });\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n insertBefore(newChild, refChild, isReplace) {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue);\n return currentValue;\n }, refChild);\n return newChild;\n }\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false });\n let index = 0;\n // Data structure\n newChild.parentNode = this;\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild);\n this.childNodes.splice(index, 0, newChild);\n }\n else {\n // appendChild\n this.childNodes.push(newChild);\n }\n const childNodesLength = this.childNodes.length;\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1;\n if (isOnlyChild) {\n this.updateChildNodes();\n }\n else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n });\n }\n }\n else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n });\n }\n else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3;\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes();\n }\n else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index);\n }\n }\n }\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? refChild.nextSibling /** replaceChild */\n : (refChild || null),\n previousSibling: newChild.previousSibling\n });\n return newChild;\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n appendChild(newChild) {\n return this.insertBefore(newChild);\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n replaceChild(newChild, oldChild) {\n if (oldChild.parentNode !== this)\n return;\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true);\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false });\n return oldChild;\n }\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n removeChild(child, options = {}) {\n const { cleanRef, doUpdate } = options;\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver$1.record({\n type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n });\n }\n // Data Structure\n const index = this.findIndex(child);\n this.childNodes.splice(index, 1);\n child.parentNode = null;\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child);\n }\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes();\n }\n return child;\n }\n remove(options) {\n var _a;\n (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this, options);\n }\n hasChildNodes() {\n return this.childNodes.length > 0;\n }\n enqueueUpdate(payload) {\n var _a;\n (_a = this._root) === null || _a === void 0 ? void 0 : _a.enqueueUpdate(payload);\n }\n get ownerDocument() {\n return env.document;\n }\n static extend(methodName, options) {\n extend(TaroNode, methodName, options);\n }\n}\n\n/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\nconst WEBKIT = 'webkit';\nconst styleProperties = [\n 'all',\n 'appearance',\n 'blockOverflow',\n 'blockSize',\n 'bottom',\n 'clear',\n 'contain',\n 'content',\n 'continue',\n 'cursor',\n 'direction',\n 'display',\n 'filter',\n 'float',\n 'gap',\n 'height',\n 'inset',\n 'isolation',\n 'left',\n 'letterSpacing',\n 'lightingColor',\n 'markerSide',\n 'mixBlendMode',\n 'opacity',\n 'order',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'rowGap',\n 'tabSize',\n 'tableLayout',\n 'top',\n 'userSelect',\n 'verticalAlign',\n 'visibility',\n 'voiceFamily',\n 'volume',\n 'whiteSpace',\n 'widows',\n 'width',\n 'zIndex',\n 'pointerEvents',\n 'aspectRatio'\n /** 非常用 style */\n // 'azimuth',\n // 'backfaceVisibility',\n // 'baselineShift',\n // 'captionSide',\n // 'chains',\n // 'dominantBaseline',\n // 'elevation',\n // 'emptyCells',\n // 'forcedColorAdjust',\n // 'glyphOrientationVertical',\n // 'hangingPunctuation',\n // 'hyphenateCharacter',\n // 'hyphens',\n // 'imageOrientation',\n // 'imageResolution',\n // 'orphans',\n // 'playDuring',\n // 'pointerEvents',\n // 'regionFragment',\n // 'richness',\n // 'running',\n // 'scrollBehavior',\n // 'speechRate',\n // 'stress',\n // 'stringSet',\n // 'unicodeBidi',\n // 'willChange',\n // 'writingMode',\n];\n// 减少文件体积\nfunction combine(prefix, list, excludeSelf) {\n !excludeSelf && styleProperties.push(prefix);\n list.forEach(item => {\n styleProperties.push(prefix + item);\n if (prefix === WEBKIT) {\n styleProperties.push('Webkit' + item);\n }\n });\n}\nconst color = 'Color';\nconst style = 'Style';\nconst width = 'Width';\nconst image = 'Image';\nconst size = 'Size';\nconst color_style_width = [color, style, width];\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image];\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius'];\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image];\nconst endRadius_startRadius = ['EndRadius', 'StartRadius'];\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top'];\nconst end_start = ['End', 'Start'];\nconst content_items_self = ['Content', 'Items', 'Self'];\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width];\nconst after_before = ['After', 'Before'];\ncombine('borderBlock', color_style_width);\ncombine('borderBlockEnd', color_style_width);\ncombine('borderBlockStart', color_style_width);\ncombine('outline', [...color_style_width, 'Offset']);\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing']);\ncombine('borderFit', ['Length', width]);\ncombine('borderInline', color_style_width);\ncombine('borderInlineEnd', color_style_width);\ncombine('borderInlineStart', color_style_width);\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image);\ncombine('borderRight', color_style_width_fitlength_fitwidth_image);\ncombine('borderTop', color_style_width_fitlength_fitwidth_image);\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image);\ncombine('textDecoration', [color, style, 'Line']);\ncombine('textEmphasis', [color, style, 'Position']);\ncombine('scrollMargin', bottom_left_right_top);\ncombine('scrollPadding', bottom_left_right_top);\ncombine('padding', bottom_left_right_top);\ncombine('margin', [...bottom_left_right_top, 'Trim']);\ncombine('scrollMarginBlock', end_start);\ncombine('scrollMarginInline', end_start);\ncombine('scrollPaddingBlock', end_start);\ncombine('scrollPaddingInline', end_start);\ncombine('gridColumn', end_start);\ncombine('gridRow', end_start);\ncombine('insetBlock', end_start);\ncombine('insetInline', end_start);\ncombine('marginBlock', end_start);\ncombine('marginInline', end_start);\ncombine('paddingBlock', end_start);\ncombine('paddingInline', end_start);\ncombine('pause', after_before);\ncombine('cue', after_before);\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type']);\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width]);\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width]);\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings']);\ncombine('transform', ['Box', 'Origin', style]);\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size]);\ncombine('listStyle', [image, 'Position', 'Type']);\ncombine('scrollSnap', ['Align', 'Stop', 'Type']);\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows']);\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows']);\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y']);\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction']);\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme']);\ncombine('textAlign', ['All', 'Last']);\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside']);\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction']);\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap']);\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate']);\ncombine('perspective', ['Origin']);\ncombine('clip', ['Path', 'Rule']);\ncombine('flow', ['From', 'Into']);\ncombine('align', ['Content', 'Items', 'Self'], true);\ncombine('alignment', ['Adjust', 'Baseline'], true);\ncombine('borderStart', endRadius_startRadius, true);\ncombine('borderEnd', endRadius_startRadius, true);\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true);\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true);\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true);\ncombine('break', [...after_before, 'Inside'], true);\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true);\ncombine('justify', content_items_self, true);\ncombine('place', content_items_self, true);\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true);\ncombine('min', blockSize_height_inlineSize_width, true);\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true);\ncombine('inline', ['BoxAlign', size, 'Sizing'], true);\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true);\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true);\ncombine('word', ['Break', 'Spacing', 'Wrap'], true);\ncombine('object', ['Fit', 'Position'], true);\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true);\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true);\n\nfunction recordCss(obj) {\n MutationObserver$1.record({\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n });\n}\nfunction enqueueUpdate(obj) {\n const element = obj._element;\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${\"st\" /* Shortcuts.Style */}`,\n value: obj.cssText\n });\n }\n}\nfunction setStyle(newVal, styleKey) {\n process.env.NODE_ENV !== 'production' && warn(isString(newVal) && newVal.length > PROPERTY_THRESHOLD, `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`);\n const old = this[styleKey];\n if (old === newVal)\n return;\n !this._pending && recordCss(this);\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey);\n delete this._value[styleKey];\n }\n else {\n this._usedStyleProp.add(styleKey);\n this._value[styleKey] = newVal;\n }\n !this._pending && enqueueUpdate(this);\n}\nfunction initStyle(ctor, styleProperties) {\n const properties = {};\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i];\n if (ctor[styleKey])\n return;\n properties[styleKey] = {\n get() {\n const val = this._value[styleKey];\n return isNull(val) || isUndefined(val) ? '' : val;\n },\n set(newVal) {\n setStyle.call(this, newVal, styleKey);\n }\n };\n }\n Object.defineProperties(ctor.prototype, properties);\n}\nfunction isCssVariable(propertyName) {\n return /^--/.test(propertyName);\n}\nclass Style {\n constructor(element) {\n this._element = element;\n this._usedStyleProp = new Set();\n this._value = {};\n }\n setCssVariables(styleKey) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || '';\n },\n set: (newVal) => {\n setStyle.call(this, newVal, styleKey);\n }\n });\n }\n get cssText() {\n if (!this._usedStyleProp.size)\n return '';\n const texts = [];\n this._usedStyleProp.forEach(key => {\n const val = this[key];\n if (isNull(val) || isUndefined(val))\n return;\n let styleName = isCssVariable(key) ? key : toDashed(key);\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`;\n }\n texts.push(`${styleName}: ${val};`);\n });\n return texts.join(' ');\n }\n set cssText(str) {\n this._pending = true;\n recordCss(this);\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop);\n });\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false;\n enqueueUpdate(this);\n return;\n }\n const rules = str.split(';');\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim();\n if (rule === '') {\n continue;\n }\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':');\n const val = valList.join(':');\n if (isUndefined(val)) {\n continue;\n }\n this.setProperty(propName.trim(), val.trim());\n }\n this._pending = false;\n enqueueUpdate(this);\n }\n setProperty(propertyName, value) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName);\n }\n else {\n propertyName = toCamelCase(propertyName);\n }\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName);\n }\n else {\n this[propertyName] = value;\n }\n }\n removeProperty(propertyName) {\n propertyName = toCamelCase(propertyName);\n if (!this._usedStyleProp.has(propertyName)) {\n return '';\n }\n const value = this[propertyName];\n this[propertyName] = undefined;\n return value;\n }\n getPropertyValue(propertyName) {\n propertyName = toCamelCase(propertyName);\n const value = this[propertyName];\n if (!value) {\n return '';\n }\n return value;\n }\n}\ninitStyle(Style, styleProperties);\nhooks.tap('injectNewStyleProperties', (newStyleProperties) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties);\n }\n else {\n if (typeof newStyleProperties !== 'string')\n return;\n initStyle(Style, [newStyleProperties]);\n }\n});\n\nfunction returnTrue() {\n return true;\n}\nfunction treeToArray(root, predict) {\n const array = [];\n const filter = predict !== null && predict !== void 0 ? predict : returnTrue;\n let object = root;\n while (object) {\n if (object.nodeType === 1 /* NodeType.ELEMENT_NODE */ && filter(object)) {\n array.push(object);\n }\n object = following(object, root);\n }\n return array;\n}\nfunction following(el, root) {\n const firstChild = el.firstChild;\n const isElmentTypeValid = el.nodeType === 1 /* NodeType.ELEMENT_NODE */ || el.nodeType === 9 /* NodeType.DOCUMENT_NODE */;\n // 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了\n if (firstChild && isElmentTypeValid) {\n return firstChild;\n }\n let current = el;\n do {\n if (current === root) {\n return null;\n }\n const nextSibling = current.nextSibling;\n if (nextSibling) {\n return nextSibling;\n }\n current = current.parentElement;\n } while (current);\n return null;\n}\n\nclass TaroElement extends TaroNode {\n constructor() {\n super();\n this.props = {};\n this.dataset = EMPTY_OBJ;\n this.nodeType = 1 /* NodeType.ELEMENT_NODE */;\n this.style = new Style(this);\n hooks.call('patchElement', this);\n }\n _stopPropagation(event) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this;\n // eslint-disable-next-line no-cond-assign\n while ((target = target.parentNode)) {\n const listeners = target.__handlers[event.type];\n if (!isArray(listeners)) {\n continue;\n }\n for (let i = listeners.length; i--;) {\n const l = listeners[i];\n l._stop = true;\n }\n }\n }\n get id() {\n return this.getAttribute(ID);\n }\n set id(val) {\n this.setAttribute(ID, val);\n }\n get className() {\n return this.getAttribute(CLASS) || '';\n }\n set className(val) {\n this.setAttribute(CLASS, val);\n }\n get cssText() {\n return this.getAttribute(STYLE) || '';\n }\n get classList() {\n return new ClassList(this.className, this);\n }\n get children() {\n return this.childNodes.filter(isElement);\n }\n get attributes() {\n const props = this.props;\n const propKeys = Object.keys(props);\n const style = this.style.cssText;\n const attrs = propKeys.map(key => ({ name: key, value: props[key] }));\n return attrs.concat(style ? { name: STYLE, value: style } : []);\n }\n get textContent() {\n let text = '';\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent;\n }\n return text;\n }\n set textContent(text) {\n super.textContent = text;\n }\n hasAttribute(qualifiedName) {\n return !isUndefined(this.props[qualifiedName]);\n }\n hasAttributes() {\n return this.attributes.length > 0;\n }\n get focus() {\n return function () {\n this.setAttribute(FOCUS, true);\n };\n }\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n set focus(value) {\n this.setAttribute(FOCUS, value);\n }\n blur() {\n this.setAttribute(FOCUS, false);\n }\n setAttribute(qualifiedName, value) {\n process.env.NODE_ENV !== 'production' && warn(isString(value) && value.length > PROPERTY_THRESHOLD, `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`);\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded();\n if (qualifiedName !== STYLE) {\n MutationObserver$1.record({\n target: this,\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n });\n }\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value;\n break;\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid);\n }\n value = String(value);\n this.props[qualifiedName] = this.uid = value;\n eventSource.set(value, this);\n break;\n default:\n this.props[qualifiedName] = value;\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null);\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value;\n }\n break;\n }\n // Serialization\n if (!this._root)\n return;\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num;\n const _path = this._path;\n qualifiedName = shortcutAttr(qualifiedName);\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value\n };\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias);\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n this.enqueueUpdate(payload);\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or static-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: value ? catchViewAlias : (this.isAnyEventBinded() ? viewAlias : staticViewAlias)\n });\n }\n else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: staticViewAlias\n });\n }\n }\n }\n removeAttribute(qualifiedName) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded();\n MutationObserver$1.record({\n target: this,\n type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n });\n if (qualifiedName === STYLE) {\n this.style.cssText = '';\n }\n else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName);\n if (isInterrupt) {\n return;\n }\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return;\n }\n delete this.props[qualifiedName];\n }\n // Serialization\n if (!this._root)\n return;\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const pureViewAlias = componentsAlias[PURE_VIEW]._num;\n const _path = this._path;\n qualifiedName = shortcutAttr(qualifiedName);\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: ''\n };\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias);\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n this.enqueueUpdate(payload);\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: this.isAnyEventBinded() ? viewAlias : (isHasExtractProp(this) ? staticViewAlias : pureViewAlias)\n });\n }\n else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: pureViewAlias\n });\n }\n }\n }\n getAttribute(qualifiedName) {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName];\n return attr !== null && attr !== void 0 ? attr : '';\n }\n getElementsByTagName(tagName) {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el);\n });\n }\n getElementsByClassName(className) {\n const classNames = className.trim().split(/\\s+/);\n return treeToArray(this, (el) => {\n const classList = el.classList;\n return classNames.every(c => classList.contains(c));\n });\n }\n dispatchEvent(event) {\n const cancelable = event.cancelable;\n const listeners = this.__handlers[event.type];\n if (!isArray(listeners)) {\n return false;\n }\n for (let i = listeners.length; i--;) {\n const listener = listeners[i];\n let result;\n if (listener._stop) {\n listener._stop = false;\n }\n else {\n hooks.call('modifyDispatchEvent', event, this);\n result = listener.call(this, event);\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true;\n }\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result);\n if (res) {\n event.mpEvent[EVENT_CALLBACK_RESULT] = result;\n }\n }\n if (event._end && event._stop) {\n break;\n }\n }\n if (event._stop) {\n this._stopPropagation(event);\n }\n else {\n event._stop = true;\n }\n return listeners != null;\n }\n addEventListener(type, handler, options) {\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes');\n let sideEffect = true;\n if (isObject(options) && options.sideEffect === false) {\n sideEffect = false;\n delete options.sideEffect;\n }\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias);\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const alias = componentsAlias[name]._num;\n this.enqueueUpdate({\n path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: alias\n });\n }\n super.addEventListener(type, handler, options);\n }\n removeEventListener(type, handler, sideEffect = true) {\n super.removeEventListener(type, handler);\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes');\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias);\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`;\n const valueAlias = componentsAlias[value]._num;\n this.enqueueUpdate({\n path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n value: valueAlias\n });\n }\n }\n static extend(methodName, options) {\n extend(TaroElement, methodName, options);\n }\n}\n\nconst options = {\n prerender: true,\n debug: false\n};\n\nfunction initPosition() {\n return {\n index: 0,\n column: 0,\n line: 0\n };\n}\nfunction feedPosition(position, str, len) {\n const start = position.index;\n const end = position.index = start + len;\n for (let i = start; i < end; i++) {\n const char = str.charAt(i);\n if (char === '\\n') {\n position.line++;\n position.column = 0;\n }\n else {\n position.column++;\n }\n }\n}\nfunction jumpPosition(position, str, end) {\n const len = end - position.index;\n return feedPosition(position, str, len);\n}\nfunction copyPosition(position) {\n return {\n index: position.index,\n line: position.line,\n column: position.column\n };\n}\nconst whitespace = /\\s/;\nfunction isWhitespaceChar(char) {\n return whitespace.test(char);\n}\nconst equalSign = /=/;\nfunction isEqualSignChar(char) {\n return equalSign.test(char);\n}\nfunction shouldBeIgnore(tagName) {\n const name = tagName.toLowerCase();\n if (options.html.skipElements.has(name)) {\n return true;\n }\n return false;\n}\nconst alphanumeric = /[A-Za-z0-9]/;\nfunction findTextEnd(str, index) {\n while (true) {\n const textEnd = str.indexOf('<', index);\n if (textEnd === -1) {\n return textEnd;\n }\n const char = str.charAt(textEnd + 1);\n if (char === '/' || char === '!' || alphanumeric.test(char)) {\n return textEnd;\n }\n index = textEnd + 1;\n }\n}\nfunction isWordEnd(cursor, wordBegin, html) {\n if (!isWhitespaceChar(html.charAt(cursor)))\n return false;\n const len = html.length;\n // backwrad\n for (let i = cursor - 1; i > wordBegin; i--) {\n const char = html.charAt(i);\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char))\n return false;\n break;\n }\n }\n // forward\n for (let i = cursor + 1; i < len; i++) {\n const char = html.charAt(i);\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char))\n return false;\n return true;\n }\n }\n}\nclass Scaner {\n constructor(html) {\n this.tokens = [];\n this.position = initPosition();\n this.html = html;\n }\n scan() {\n const { html, position } = this;\n const len = html.length;\n while (position.index < len) {\n const start = position.index;\n this.scanText();\n if (position.index === start) {\n const isComment = html.startsWith('!--', start + 1);\n if (isComment) {\n this.scanComment();\n }\n else {\n const tagName = this.scanTag();\n if (shouldBeIgnore(tagName)) {\n this.scanSkipTag(tagName);\n }\n }\n }\n }\n return this.tokens;\n }\n scanText() {\n const type = 'text';\n const { html, position } = this;\n let textEnd = findTextEnd(html, position.index);\n if (textEnd === position.index) {\n return;\n }\n if (textEnd === -1) {\n textEnd = html.length;\n }\n const start = copyPosition(position);\n const content = html.slice(position.index, textEnd);\n jumpPosition(position, html, textEnd);\n const end = copyPosition(position);\n this.tokens.push({ type, content, position: { start, end } });\n }\n scanComment() {\n const type = 'comment';\n const { html, position } = this;\n const start = copyPosition(position);\n feedPosition(position, html, 4); // \"<!--\".length\n let contentEnd = html.indexOf('-->', position.index);\n let commentEnd = contentEnd + 3; // \"-->\".length\n if (contentEnd === -1) {\n contentEnd = commentEnd = html.length;\n }\n const content = html.slice(position.index, contentEnd);\n jumpPosition(position, html, commentEnd);\n this.tokens.push({\n type,\n content,\n position: {\n start,\n end: copyPosition(position)\n }\n });\n }\n scanTag() {\n this.scanTagStart();\n const tagName = this.scanTagName();\n this.scanAttrs();\n this.scanTagEnd();\n return tagName;\n }\n scanTagStart() {\n const type = 'tag-start';\n const { html, position } = this;\n const secondChar = html.charAt(position.index + 1);\n const close = secondChar === '/';\n const start = copyPosition(position);\n feedPosition(position, html, close ? 2 : 1);\n this.tokens.push({ type, close, position: { start } });\n }\n scanTagEnd() {\n const type = 'tag-end';\n const { html, position } = this;\n const firstChar = html.charAt(position.index);\n const close = firstChar === '/';\n feedPosition(position, html, close ? 2 : 1);\n const end = copyPosition(position);\n this.tokens.push({ type, close, position: { end } });\n }\n scanTagName() {\n const type = 'tag';\n const { html, position } = this;\n const len = html.length;\n let start = position.index;\n while (start < len) {\n const char = html.charAt(start);\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n if (isTagChar)\n break;\n start++;\n }\n let end = start + 1;\n while (end < len) {\n const char = html.charAt(end);\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n if (!isTagChar)\n break;\n end++;\n }\n jumpPosition(position, html, end);\n const tagName = html.slice(start, end);\n this.tokens.push({\n type,\n content: tagName\n });\n return tagName;\n }\n scanAttrs() {\n const { html, position, tokens } = this;\n let cursor = position.index;\n let quote = null; // null, single-, or double-quote\n let wordBegin = cursor; // index of word start\n const words = []; // \"key\", \"key=value\", \"key='value'\", etc\n const len = html.length;\n while (cursor < len) {\n const char = html.charAt(cursor);\n if (quote) {\n const isQuoteEnd = char === quote;\n if (isQuoteEnd) {\n quote = null;\n }\n cursor++;\n continue;\n }\n const isTagEnd = char === '/' || char === '>';\n if (isTagEnd) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor));\n }\n break;\n }\n if (isWordEnd(cursor, wordBegin, html)) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor));\n }\n wordBegin = cursor + 1;\n cursor++;\n continue;\n }\n const isQuoteStart = char === '\\'' || char === '\"';\n if (isQuoteStart) {\n quote = char;\n cursor++;\n continue;\n }\n cursor++;\n }\n jumpPosition(position, html, cursor);\n const wLen = words.length;\n const type = 'attribute';\n for (let i = 0; i < wLen; i++) {\n const word = words[i];\n const isNotPair = word.includes('=');\n if (isNotPair) {\n const secondWord = words[i + 1];\n if (secondWord && secondWord.startsWith('=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n const thirdWord = words[i + 2];\n i += 1;\n if (thirdWord) {\n const newWord = word + '=' + thirdWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n }\n }\n if (word.endsWith('=')) {\n const secondWord = words[i + 1];\n if (secondWord && !secondWord.includes('=')) {\n const newWord = word + secondWord;\n tokens.push({ type, content: newWord });\n i += 1;\n continue;\n }\n const newWord = word.slice(0, -1);\n tokens.push({ type, content: newWord });\n continue;\n }\n tokens.push({ type, content: word });\n }\n }\n scanSkipTag(tagName) {\n const { html, position } = this;\n const safeTagName = tagName.toLowerCase();\n const len = html.length;\n while (position.index < len) {\n const nextTag = html.indexOf('</', position.index);\n if (nextTag === -1) {\n this.scanText();\n break;\n }\n jumpPosition(position, html, nextTag);\n const name = this.scanTag();\n if (safeTagName === name.toLowerCase()) {\n break;\n }\n }\n }\n}\n\nfunction unquote(str) {\n const car = str.charAt(0);\n const end = str.length - 1;\n const isQuoteStart = car === '\"' || car === \"'\";\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end);\n }\n return str;\n}\n\nconst LEFT_BRACKET = '{';\nconst RIGHT_BRACKET = '}';\nconst CLASS_SELECTOR = '.';\nconst ID_SELECTOR = '#';\nconst CHILD_COMBINATOR = '>';\nconst GENERAL_SIBLING_COMBINATOR = '~';\nconst ADJACENT_SIBLING_COMBINATOR = '+';\nclass StyleTagParser {\n constructor() {\n this.styles = [];\n }\n extractStyle(src) {\n const REG_STYLE = /<style\\s?[^>]*>((.|\\n|\\s)+?)<\\/style>/g;\n let html = src;\n // let html = src.replace(/\\n/g, '')\n html = html.replace(REG_STYLE, (_, $1) => {\n const style = $1.trim();\n this.stringToSelector(style);\n return '';\n });\n return html.trim();\n }\n stringToSelector(style) {\n let lb = style.indexOf(LEFT_BRACKET);\n while (lb > -1) {\n const rb = style.indexOf(RIGHT_BRACKET);\n const selectors = style.slice(0, lb).trim();\n let content = style.slice(lb + 1, rb);\n content = content.replace(/:(.*);/g, function (_, $1) {\n const t = $1.trim().replace(/ +/g, '+++');\n return `:${t};`;\n });\n content = content.replace(/ /g, '');\n content = content.replace(/\\+\\+\\+/g, ' ');\n if (!(/;$/.test(content))) {\n content += ';';\n }\n selectors.split(',').forEach(src => {\n const selectorList = this.parseSelector(src);\n this.styles.push({\n content,\n selectorList\n });\n });\n style = style.slice(rb + 1);\n lb = style.indexOf(LEFT_BRACKET);\n }\n // console.log('res this.styles: ', this.styles)\n }\n parseSelector(src) {\n const list = src\n .trim()\n .replace(/ *([>~+]) */g, ' $1')\n .replace(/ +/g, ' ')\n .replace(/\\[\\s*([^[\\]=\\s]+)\\s*=\\s*([^[\\]=\\s]+)\\s*\\]/g, '[$1=$2]')\n .split(' ');\n const selectors = list.map(item => {\n const firstChar = item.charAt(0);\n const selector = {\n isChild: firstChar === CHILD_COMBINATOR,\n isGeneralSibling: firstChar === GENERAL_SIBLING_COMBINATOR,\n isAdjacentSibling: firstChar === ADJACENT_SIBLING_COMBINATOR,\n tag: null,\n id: null,\n class: [],\n attrs: []\n };\n item = item.replace(/^[>~+]/, '');\n // 属性选择器\n item = item.replace(/\\[(.+?)\\]/g, function (_, $1) {\n const [key, value] = $1.split('=');\n const all = $1.indexOf('=') === -1;\n const attr = {\n all,\n key,\n value: all ? null : value\n };\n selector.attrs.push(attr);\n return '';\n });\n item = item.replace(/([.#][A-Za-z0-9-_]+)/g, function (_, $1) {\n if ($1[0] === ID_SELECTOR) {\n // id 选择器\n selector.id = $1.substr(1);\n }\n else if ($1[0] === CLASS_SELECTOR) {\n // class 选择器\n selector.class.push($1.substr(1));\n }\n return '';\n });\n // 标签选择器\n if (item !== '') {\n selector.tag = item;\n }\n return selector;\n });\n return selectors;\n }\n matchStyle(tagName, el, list) {\n const res = sortStyles(this.styles).reduce((str, { content, selectorList }, i) => {\n let idx = list[i];\n let selector = selectorList[idx];\n const nextSelector = selectorList[idx + 1];\n if ((nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isGeneralSibling) || (nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isAdjacentSibling)) {\n selector = nextSelector;\n idx += 1;\n list[i] += 1;\n }\n let isMatch = this.matchCurrent(tagName, el, selector);\n if (isMatch && selector.isGeneralSibling) {\n let prev = getPreviousElement(el);\n while (prev) {\n if (prev.h5tagName && this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])) {\n isMatch = true;\n break;\n }\n prev = getPreviousElement(prev);\n isMatch = false;\n }\n }\n if (isMatch && selector.isAdjacentSibling) {\n const prev = getPreviousElement(el);\n if (!prev || !prev.h5tagName) {\n isMatch = false;\n }\n else {\n const isSiblingMatch = this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1]);\n if (!isSiblingMatch) {\n isMatch = false;\n }\n }\n }\n if (isMatch) {\n if (idx === selectorList.length - 1) {\n return str + content;\n }\n else if (idx < selectorList.length - 1) {\n list[i] += 1;\n }\n }\n else {\n // 直接子代组合器: >\n if (selector.isChild && idx > 0) {\n list[i] -= 1;\n if (this.matchCurrent(tagName, el, selectorList[list[i]])) {\n list[i] += 1;\n }\n }\n }\n return str;\n }, '');\n return res;\n }\n matchCurrent(tagName, el, selector) {\n // 标签选择器\n if (selector.tag && selector.tag !== tagName)\n return false;\n // id 选择器\n if (selector.id && selector.id !== el.id)\n return false;\n // class 选择器\n if (selector.class.length) {\n const classList = el.className.split(' ');\n for (let i = 0; i < selector.class.length; i++) {\n const cls = selector.class[i];\n if (classList.indexOf(cls) === -1) {\n return false;\n }\n }\n }\n // 属性选择器\n if (selector.attrs.length) {\n for (let i = 0; i < selector.attrs.length; i++) {\n const { all, key, value } = selector.attrs[i];\n if (all && !el.hasAttribute(key)) {\n return false;\n }\n else {\n const attr = el.getAttribute(key);\n if (attr !== unquote(value || '')) {\n return false;\n }\n }\n }\n }\n return true;\n }\n}\nfunction getPreviousElement(el) {\n const parent = el.parentElement;\n if (!parent)\n return null;\n const prev = el.previousSibling;\n if (!prev)\n return null;\n if (prev.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n return prev;\n }\n else {\n return getPreviousElement(prev);\n }\n}\n// 根据 css selector 权重排序: 权重大的靠后\n// @WARN 不考虑伪类\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#specificity_2\nfunction sortStyles(styles) {\n return styles.sort((s1, s2) => {\n const hundreds1 = getHundredsWeight(s1.selectorList);\n const hundreds2 = getHundredsWeight(s2.selectorList);\n if (hundreds1 !== hundreds2)\n return hundreds1 - hundreds2;\n const tens1 = getTensWeight(s1.selectorList);\n const tens2 = getTensWeight(s2.selectorList);\n if (tens1 !== tens2)\n return tens1 - tens2;\n const ones1 = getOnesWeight(s1.selectorList);\n const ones2 = getOnesWeight(s2.selectorList);\n return ones1 - ones2;\n });\n}\nfunction getHundredsWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + (cur.id ? 1 : 0), 0);\n}\nfunction getTensWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + cur.class.length + cur.attrs.length, 0);\n}\nfunction getOnesWeight(selectors) {\n return selectors.reduce((pre, cur) => pre + (cur.tag ? 1 : 0), 0);\n}\n\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\nconst specialMiniElements = {\n img: 'image',\n iframe: 'web-view'\n};\nconst internalCompsList = Object.keys(internalComponents)\n .map(i => i.toLowerCase())\n .join(',');\n// https://developers.weixin.qq.com/miniprogram/dev/component\nconst isMiniElements = makeMap(internalCompsList, true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\nconst isInlineElements = makeMap('a,i,abbr,iframe,select,acronym,slot,small,span,bdi,kbd,strong,big,map,sub,sup,br,mark,mark,meter,template,canvas,textarea,cite,object,time,code,output,u,data,picture,tt,datalist,var,dfn,del,q,em,s,embed,samp,b', true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nconst isBlockElements = makeMap('address,fieldset,li,article,figcaption,main,aside,figure,nav,blockquote,footer,ol,details,form,p,dialog,h1,h2,h3,h4,h5,h6,pre,dd,header,section,div,hgroup,table,dl,hr,ul,dt', true);\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n};\nfunction hasTerminalParent(tagName, stack) {\n const tagParents = closingTagAncestorBreakers[tagName];\n if (tagParents) {\n let currentIndex = stack.length - 1;\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName;\n if (parentTagName === tagName) {\n break;\n }\n if (tagParents && tagParents.includes(parentTagName)) {\n return true;\n }\n currentIndex--;\n }\n }\n return false;\n}\nfunction getTagName(tag) {\n if (options.html.renderHTMLTag) {\n return tag;\n }\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag];\n }\n else if (isMiniElements(tag)) {\n return tag;\n }\n else if (isBlockElements(tag)) {\n return 'view';\n }\n else if (isInlineElements(tag)) {\n return 'text';\n }\n return 'view';\n}\nfunction splitEqual(str) {\n const sep = '=';\n const idx = str.indexOf(sep);\n if (idx === -1)\n return [str];\n const key = str.slice(0, idx).trim();\n const value = str.slice(idx + sep.length).trim();\n return [key, value];\n}\nfunction format(children, document, styleOptions, parent) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false;\n }\n else if (child.type === 'text') {\n return child.content !== '';\n }\n return true;\n })\n .map((child) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content);\n if (isFunction(options.html.transformText)) {\n text = options.html.transformText(text, child);\n }\n parent === null || parent === void 0 ? void 0 : parent.appendChild(text);\n return text;\n }\n const el = document.createElement(getTagName(child.tagName));\n el.h5tagName = child.tagName;\n parent === null || parent === void 0 ? void 0 : parent.appendChild(el);\n if (!options.html.renderHTMLTag) {\n el.className = `h5-${child.tagName}`;\n }\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i];\n const [key, value] = splitEqual(attr);\n if (key === 'class') {\n el.className += ' ' + unquote(value);\n }\n else if (key[0] === 'o' && key[1] === 'n') {\n continue;\n }\n else {\n el.setAttribute(key, value == null ? true : unquote(value));\n }\n }\n const { styleTagParser, descendantList } = styleOptions;\n const list = descendantList.slice();\n const style = styleTagParser.matchStyle(child.tagName, el, list);\n el.setAttribute('style', style + el.style.cssText);\n // console.log('style, ', style)\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el);\n if (isFunction(options.html.transformElement)) {\n return options.html.transformElement(el, child);\n }\n return el;\n });\n}\nfunction parser(html, document) {\n const styleTagParser = new StyleTagParser();\n html = styleTagParser.extractStyle(html);\n const tokens = new Scaner(html).scan();\n const root = { tagName: '', children: [], type: 'element', attributes: [] };\n const state = { tokens, options, cursor: 0, stack: [root] };\n parse(state);\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n });\n}\nfunction parse(state) {\n const { tokens, stack } = state;\n let { cursor } = state;\n const len = tokens.length;\n let nodes = stack[stack.length - 1].children;\n while (cursor < len) {\n const token = tokens[cursor];\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token);\n cursor++;\n continue;\n }\n const tagToken = tokens[++cursor];\n cursor++;\n const tagName = tagToken.content.toLowerCase();\n if (token.close) {\n let index = stack.length;\n let shouldRewind = false;\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true;\n break;\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor];\n if (endToken.type !== 'tag-end')\n break;\n cursor++;\n }\n if (shouldRewind) {\n stack.splice(index);\n break;\n }\n else {\n continue;\n }\n }\n const isClosingTag = options.html.closingElements.has(tagName);\n let shouldRewindToAutoClose = isClosingTag;\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack);\n }\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1;\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex);\n const previousIndex = currentIndex - 1;\n nodes = stack[previousIndex].children;\n break;\n }\n currentIndex = currentIndex - 1;\n }\n }\n const attributes = [];\n let attrToken;\n while (cursor < len) {\n attrToken = tokens[cursor];\n if (attrToken.type === 'tag-end')\n break;\n attributes.push(attrToken.content);\n cursor++;\n }\n cursor++;\n const children = [];\n const element = {\n type: 'element',\n tagName: tagToken.content,\n attributes,\n children\n };\n nodes.push(element);\n const hasChildren = !(attrToken.close || options.html.voidElements.has(tagName));\n if (hasChildren) {\n stack.push({ tagName, children });\n const innerState = { tokens, cursor, stack };\n parse(innerState);\n cursor = innerState.cursor;\n }\n }\n state.cursor = cursor;\n}\n\noptions.html = {\n skipElements: new Set(['style', 'script']),\n voidElements: new Set([\n '!doctype', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link',\n 'meta', 'param', 'source', 'track', 'wbr'\n ]),\n closingElements: new Set([\n 'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n ]),\n renderHTMLTag: false\n};\nfunction setInnerHTML(element, html) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n const children = parser(html, element.ownerDocument);\n for (let i = 0; i < children.length; i++) {\n element.appendChild(children[i]);\n }\n}\n\nfunction getBoundingClientRectImpl() {\n if (!options.miniGlobal)\n return Promise.resolve(null);\n return new Promise(resolve => {\n const query = options.miniGlobal.createSelectorQuery();\n query.select(`#${this.uid}`).boundingClientRect(res => {\n resolve(res);\n }).exec();\n });\n}\nfunction getTemplateContent(ctx) {\n if (ctx.nodeName === 'template') {\n const document = ctx.ownerDocument;\n const content = document.createElement(DOCUMENT_FRAGMENT);\n content.childNodes = ctx.childNodes;\n ctx.childNodes = [content];\n content.parentNode = ctx;\n content.childNodes.forEach(nodes => {\n nodes.parentNode = content;\n });\n return content;\n }\n}\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nfunction insertAdjacentHTML(position, html) {\n var _a, _b;\n const parsedNodes = parser(html, this.ownerDocument);\n for (let i = 0; i < parsedNodes.length; i++) {\n const n = parsedNodes[i];\n switch (position) {\n case 'beforebegin':\n (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(n, this);\n break;\n case 'afterbegin':\n if (this.hasChildNodes()) {\n this.insertBefore(n, this.childNodes[0]);\n }\n else {\n this.appendChild(n);\n }\n break;\n case 'beforeend':\n this.appendChild(n);\n break;\n case 'afterend':\n (_b = this.parentNode) === null || _b === void 0 ? void 0 : _b.appendChild(n);\n break;\n }\n }\n}\nfunction cloneNode(isDeep = false) {\n const document = this.ownerDocument;\n let newNode;\n if (this.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n newNode = document.createElement(this.nodeName);\n }\n else if (this.nodeType === 3 /* NodeType.TEXT_NODE */) {\n newNode = document.createTextNode('');\n }\n for (const key in this) {\n const value = this[key];\n // eslint-disable-next-line valid-typeof\n if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n newNode[key] = Object.assign({}, value);\n }\n else if (key === '_value') {\n newNode[key] = value;\n }\n else if (key === STYLE) {\n newNode.style._value = Object.assign({}, value._value);\n newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp));\n }\n }\n if (isDeep) {\n newNode.childNodes = this.childNodes.map(node => node.cloneNode(true));\n }\n return newNode;\n}\nfunction contains(node) {\n let isContains = false;\n this.childNodes.some(childNode => {\n const { uid } = childNode;\n if (uid === node.uid || uid === node.id || childNode.contains(node)) {\n isContains = true;\n return true;\n }\n });\n return isContains;\n}\n\nif (process.env.TARO_PLATFORM !== 'web') {\n if (ENABLE_INNER_HTML) {\n TaroNode.extend('innerHTML', {\n set(html) {\n setInnerHTML.call(this, this, html);\n },\n get() {\n return '';\n }\n });\n if (ENABLE_ADJACENT_HTML) {\n TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML);\n }\n }\n if (ENABLE_CLONE_NODE) {\n TaroNode.extend('cloneNode', cloneNode);\n }\n if (ENABLE_CONTAINS) {\n TaroNode.extend('contains', contains);\n }\n if (ENABLE_SIZE_APIS) {\n TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl);\n }\n if (ENABLE_TEMPLATE_CONTENT) {\n TaroElement.extend('content', {\n get() {\n return getTemplateContent(this);\n }\n });\n }\n}\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nclass TaroEvent {\n constructor(type, opts, event) {\n this._stop = false;\n this._end = false;\n this.defaultPrevented = false;\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n this.button = 0;\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n this.timeStamp = Date.now();\n this.type = type.toLowerCase();\n this.mpEvent = event;\n this.bubbles = Boolean(opts && opts.bubbles);\n this.cancelable = Boolean(opts && opts.cancelable);\n }\n stopPropagation() {\n this._stop = true;\n }\n stopImmediatePropagation() {\n this._end = this._stop = true;\n }\n preventDefault() {\n this.defaultPrevented = true;\n }\n get target() {\n var _a, _b, _c, _d, _e;\n const cacheTarget = this.cacheTarget;\n if (!cacheTarget) {\n const target = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.target) || null);\n const currentEle = env.document.getElementById(((_b = target.dataset) === null || _b === void 0 ? void 0 : _b.sid) || target.id || null);\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(((_c = target.targetDataset) === null || _c === void 0 ? void 0 : _c.sid) || ((_d = target.dataset) === null || _d === void 0 ? void 0 : _d.sid) || target.id || null);\n target.dataset = Object.assign(Object.assign({}, (currentEle !== null ? currentEle.dataset : EMPTY_OBJ)), (element !== null ? element.dataset : EMPTY_OBJ));\n for (const key in (_e = this.mpEvent) === null || _e === void 0 ? void 0 : _e.detail) {\n target[key] = this.mpEvent.detail[key];\n }\n this.cacheTarget = target;\n return target;\n }\n else {\n return cacheTarget;\n }\n }\n get currentTarget() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const cacheCurrentTarget = this.cacheCurrentTarget;\n if (!cacheCurrentTarget) {\n const doc = env.document;\n const currentTarget = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.currentTarget) || null);\n const element = doc.getElementById(((_b = currentTarget.dataset) === null || _b === void 0 ? void 0 : _b.sid) || currentTarget.id || null);\n const targetElement = doc.getElementById(((_e = (_d = (_c = this.mpEvent) === null || _c === void 0 ? void 0 : _c.target) === null || _d === void 0 ? void 0 : _d.dataset) === null || _e === void 0 ? void 0 : _e.sid) || ((_g = (_f = this.mpEvent) === null || _f === void 0 ? void 0 : _f.target) === null || _g === void 0 ? void 0 : _g.id) || null);\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target;\n return this.target;\n }\n currentTarget.dataset = element.dataset;\n for (const key in (_h = this.mpEvent) === null || _h === void 0 ? void 0 : _h.detail) {\n currentTarget[key] = this.mpEvent.detail[key];\n }\n this.cacheCurrentTarget = currentTarget;\n return currentTarget;\n }\n else {\n return cacheCurrentTarget;\n }\n }\n}\nfunction createEvent(event, node) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true });\n }\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event);\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue;\n }\n else {\n domEv[key] = event[key];\n }\n }\n if (domEv.type === CONFIRM && (node === null || node === void 0 ? void 0 : node.nodeName) === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13;\n }\n return domEv;\n}\nconst eventsBatch = {};\nfunction getEventCBResult(event) {\n const result = event[EVENT_CALLBACK_RESULT];\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT];\n }\n return result;\n}\n// 小程序的事件代理回调函数\nfunction eventHandler(event) {\n var _a, _b;\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: event._type // ohos only\n });\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: event._detail || Object.assign({}, event) // ohos only\n });\n event.currentTarget = event.currentTarget || event.target || Object.assign({}, event);\n hooks.call('modifyMpEventImpl', event);\n const currentTarget = event.currentTarget;\n const id = ((_a = currentTarget.dataset) === null || _a === void 0 ? void 0 : _a.sid /** sid */) || currentTarget.id /** uid */ || ((_b = event.detail) === null || _b === void 0 ? void 0 : _b.id) || '';\n const node = env.document.getElementById(id);\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node);\n hooks.call('modifyTaroEvent', e, node);\n hooks.call('dispatchTaroEvent', e, node);\n hooks.call('dispatchTaroEventFinish', e, node);\n };\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type;\n if (!hooks.call('isBubbleEvents', type) ||\n !isParentBinded(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn());\n delete eventsBatch[type];\n }\n dispatch();\n });\n return getEventCBResult(event);\n }\n else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] || (eventsBatch[type] = [])).push(dispatch);\n }\n }\n else {\n dispatch();\n return getEventCBResult(event);\n }\n }\n}\n\nclass FormElement extends TaroElement {\n get type() {\n var _a;\n return (_a = this.props[TYPE]) !== null && _a !== void 0 ? _a : '';\n }\n set type(val) {\n this.setAttribute(TYPE, val);\n }\n get value() {\n // eslint-disable-next-line dot-notation\n const val = this.props[VALUE];\n return val == null ? '' : val;\n }\n set value(val) {\n this.setAttribute(VALUE, val);\n }\n dispatchEvent(event) {\n if (event.mpEvent) {\n const val = event.mpEvent.detail.value;\n if (event.type === CHANGE) {\n this.props.value = val;\n }\n else if (event.type === INPUT) {\n // Web 规范中表单组件的 value 应该跟着输入改变\n // 只是改 this.props.value 的话不会进行 setData,因此这里修改 this.value。\n // 只测试了 React、Vue、Vue3 input 组件的 onInput 事件,onChange 事件不确定有没有副作用,所以暂不修改。\n this.value = val;\n }\n }\n return super.dispatchEvent(event);\n }\n}\n\nclass Performance {\n constructor() {\n this.recorder = new Map();\n }\n start(id) {\n if (!options.debug) {\n return;\n }\n this.recorder.set(id, Date.now());\n }\n stop(id) {\n if (!options.debug) {\n return;\n }\n const now = Date.now();\n const prev = this.recorder.get(id);\n this.recorder.delete(id);\n const time = now - prev;\n // eslint-disable-next-line no-console\n console.log(`${id} 时长: ${time}ms`);\n }\n}\nconst perf = new Performance();\n\nfunction findCustomWrapper(root, dataPathArr) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1);\n let currentData = root;\n let customWrapper;\n let splitedPath = '';\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes');\n currentData = currentData[key];\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el));\n }\n if (isUndefined(currentData))\n return true;\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid);\n if (res) {\n customWrapper = res;\n splitedPath = dataPathArr.slice(i + 2).join('.');\n }\n }\n });\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n };\n }\n}\nclass TaroRootElement extends TaroElement {\n constructor() {\n super();\n this.updatePayloads = [];\n this.updateCallbacks = [];\n this.pendingUpdate = false;\n this.ctx = null;\n this.nodeName = ROOT_STR;\n this.tagName = ROOT_STR.toUpperCase();\n }\n get _path() {\n return ROOT_STR;\n }\n get _root() {\n return this;\n }\n enqueueUpdate(payload) {\n this.updatePayloads.push(payload);\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate();\n }\n }\n performUpdate(initRender = false, prerender) {\n this.pendingUpdate = true;\n const ctx = hooks.call('proxyToRaw', this.ctx);\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`;\n perf.start(setDataMark);\n const data = Object.create(null);\n const resetPaths = new Set(initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []);\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift();\n if (path.endsWith(\"cn\" /* Shortcuts.Childnodes */)) {\n resetPaths.add(path);\n }\n data[path] = value;\n }\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path];\n }\n });\n const value = data[path];\n if (isFunction(value)) {\n data[path] = value();\n }\n }\n // 预渲染\n if (isFunction(prerender))\n return prerender(data);\n // 正常渲染\n this.pendingUpdate = false;\n let normalUpdate = {};\n const customWrapperMap = new Map();\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data;\n }\n else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.');\n const found = findCustomWrapper(this, dataPathArr);\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found;\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, Object.assign(Object.assign({}, (customWrapperMap.get(customWrapper) || {})), { [`i.${splitedPath}`]: data[p] }));\n }\n else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p];\n }\n }\n }\n const customWrapperCount = customWrapperMap.size;\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0;\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0);\n let executeTime = 0;\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark);\n this.flushUpdateCallback();\n initRender && perf.stop(PAGE_INIT);\n }\n };\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data);\n }\n ctx.setData(data, cb);\n });\n }\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate);\n }\n ctx.setData(normalUpdate, cb);\n }\n }, 0);\n }\n enqueueUpdateCallback(cb, ctx) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb();\n });\n }\n flushUpdateCallback() {\n const updateCallbacks = this.updateCallbacks;\n if (!updateCallbacks.length)\n return;\n const copies = updateCallbacks.slice(0);\n this.updateCallbacks.length = 0;\n for (let i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n}\n\nclass TaroText extends TaroNode {\n constructor(value) {\n super();\n this.nodeType = 3 /* NodeType.TEXT_NODE */;\n this.nodeName = '#text';\n this._value = value;\n }\n set textContent(text) {\n MutationObserver$1.record({\n target: this,\n type: \"characterData\" /* MutationRecordType.CHARACTER_DATA */,\n oldValue: this._value\n });\n this._value = text;\n this.enqueueUpdate({\n path: `${this._path}.${\"v\" /* Shortcuts.Text */}`,\n value: text\n });\n }\n get textContent() {\n return this._value;\n }\n set nodeValue(text) {\n this.textContent = text;\n }\n get nodeValue() {\n return this._value;\n }\n set data(text) {\n this.textContent = text;\n }\n get data() {\n return this._value;\n }\n}\n\nvar _dict, _a;\nconst findReg = /[!'()~]|%20|%00/g;\nconst plusReg = /\\+/g;\nconst replaceCharMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n};\nfunction replacer(match) {\n return replaceCharMap[match];\n}\nfunction appendTo(dict, name, value) {\n const res = isArray(value) ? value.join(',') : value;\n if (name in dict)\n dict[name].push(res);\n else\n dict[name] = [res];\n}\nfunction addEach(value, key) {\n appendTo(this, key, value);\n}\nfunction decode(str) {\n return decodeURIComponent(str.replace(plusReg, ' '));\n}\nfunction encode(str) {\n return encodeURIComponent(str).replace(findReg, replacer);\n}\nconst URLSearchParams = process.env.TARO_PLATFORM === 'web' ? env.window.URLSearchParams : (_a = class {\n constructor(query) {\n _dict.set(this, Object.create(null));\n query !== null && query !== void 0 ? query : (query = '');\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n if (typeof query === 'string') {\n if (query.charAt(0) === '?') {\n query = query.slice(1);\n }\n for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n const value = pairs[i];\n const index = value.indexOf('=');\n // 针对不规范的 url 参数做容错处理,如:word=你%好\n try {\n if (index > -1) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n }\n else if (value.length) {\n appendTo(dict, decode(value), '');\n }\n }\n catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] URL 参数 ${value} decode 异常`);\n }\n }\n }\n }\n else {\n if (isArray(query)) {\n for (let i = 0, length = query.length; i < length; i++) {\n const value = query[i];\n appendTo(dict, value[0], value[1]);\n }\n }\n else if (query.forEach) {\n query.forEach(addEach, dict);\n }\n else {\n for (const key in query) {\n appendTo(dict, key, query[key]);\n }\n }\n }\n }\n append(name, value) {\n appendTo(__classPrivateFieldGet(this, _dict, \"f\"), name, value);\n }\n delete(name) {\n delete __classPrivateFieldGet(this, _dict, \"f\")[name];\n }\n get(name) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n return name in dict ? dict[name][0] : null;\n }\n getAll(name) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n return name in dict ? dict[name].slice(0) : [];\n }\n has(name) {\n return name in __classPrivateFieldGet(this, _dict, \"f\");\n }\n keys() {\n return Object.keys(__classPrivateFieldGet(this, _dict, \"f\"));\n }\n set(name, value) {\n __classPrivateFieldGet(this, _dict, \"f\")[name] = ['' + value];\n }\n forEach(callback, thisArg) {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n Object.getOwnPropertyNames(dict).forEach(function (name) {\n dict[name].forEach(function (value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n }\n toJSON() {\n return {};\n }\n toString() {\n const dict = __classPrivateFieldGet(this, _dict, \"f\");\n const query = [];\n for (const key in dict) {\n const name = encode(key);\n for (let i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n }\n },\n _dict = new WeakMap(),\n _a);\n\nvar _TaroURL_hash, _TaroURL_hostname, _TaroURL_pathname, _TaroURL_port, _TaroURL_protocol, _TaroURL_search;\nclass TaroURL {\n static createObjectURL() {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.');\n }\n static revokeObjectURL() {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.');\n }\n constructor(url, base) {\n /* private property */\n _TaroURL_hash.set(this, '');\n _TaroURL_hostname.set(this, '');\n _TaroURL_pathname.set(this, '');\n _TaroURL_port.set(this, '');\n _TaroURL_protocol.set(this, '');\n _TaroURL_search.set(this, void 0);\n if (!isString(url))\n url = String(url);\n const parseResult = parseUrlBase(url, base);\n const { hash, hostname, pathname, port, protocol, search } = parseResult;\n __classPrivateFieldSet(this, _TaroURL_hash, hash, \"f\");\n __classPrivateFieldSet(this, _TaroURL_hostname, hostname, \"f\");\n __classPrivateFieldSet(this, _TaroURL_pathname, pathname || '/', \"f\");\n __classPrivateFieldSet(this, _TaroURL_port, port, \"f\");\n __classPrivateFieldSet(this, _TaroURL_protocol, protocol, \"f\");\n __classPrivateFieldSet(this, _TaroURL_search, new URLSearchParams(search), \"f\");\n }\n /* public property */\n get protocol() {\n return __classPrivateFieldGet(this, _TaroURL_protocol, \"f\");\n }\n set protocol(val) {\n isString(val) && (__classPrivateFieldSet(this, _TaroURL_protocol, val.trim(), \"f\"));\n }\n get host() {\n return this.hostname + (this.port ? ':' + this.port : '');\n }\n set host(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { hostname, port } = parseUrl(`//${val}`);\n this.hostname = hostname;\n this.port = port;\n }\n }\n get hostname() {\n return __classPrivateFieldGet(this, _TaroURL_hostname, \"f\");\n }\n set hostname(val) {\n val && isString(val) && (__classPrivateFieldSet(this, _TaroURL_hostname, val.trim(), \"f\"));\n }\n get port() {\n return __classPrivateFieldGet(this, _TaroURL_port, \"f\");\n }\n set port(val) {\n isString(val) && (__classPrivateFieldSet(this, _TaroURL_port, val.trim(), \"f\"));\n }\n get pathname() {\n return __classPrivateFieldGet(this, _TaroURL_pathname, \"f\");\n }\n set pathname(val) {\n if (isString(val)) {\n val = val.trim();\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/;\n let temp = val;\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '');\n }\n if (temp)\n __classPrivateFieldSet(this, _TaroURL_pathname, '/' + temp, \"f\");\n else\n __classPrivateFieldSet(this, _TaroURL_pathname, '/', \"f\");\n }\n }\n get search() {\n const val = __classPrivateFieldGet(this, _TaroURL_search, \"f\").toString();\n return (val.length === 0 || val.startsWith('?')) ? val : `?${val}`;\n }\n set search(val) {\n if (isString(val)) {\n val = val.trim();\n __classPrivateFieldSet(this, _TaroURL_search, new URLSearchParams(val), \"f\");\n }\n }\n get hash() {\n return __classPrivateFieldGet(this, _TaroURL_hash, \"f\");\n }\n set hash(val) {\n if (isString(val)) {\n val = val.trim();\n if (val)\n __classPrivateFieldSet(this, _TaroURL_hash, val.startsWith('#') ? val : `#${val}`, \"f\");\n else\n __classPrivateFieldSet(this, _TaroURL_hash, '', \"f\");\n }\n }\n get href() {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;\n }\n set href(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.pathname = pathname;\n this.port = port;\n this.hash = hash;\n this.search = search;\n }\n }\n get origin() {\n return `${this.protocol}//${this.host}`;\n }\n set origin(val) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.port = port;\n }\n }\n get searchParams() {\n return __classPrivateFieldGet(this, _TaroURL_search, \"f\");\n }\n // public method\n toString() {\n return this.href;\n }\n toJSON() {\n return this.toString();\n }\n // convenient for deconstructor\n _toRaw() {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n };\n }\n}\n_TaroURL_hash = new WeakMap(), _TaroURL_hostname = new WeakMap(), _TaroURL_pathname = new WeakMap(), _TaroURL_port = new WeakMap(), _TaroURL_protocol = new WeakMap(), _TaroURL_search = new WeakMap();\nconst URL = process.env.TARO_PLATFORM === 'web' ? env.window.URL : TaroURL;\nfunction parseUrl(url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: ''\n };\n if (!url || !isString(url))\n return result;\n url = url.trim();\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const matches = url.match(PATTERN);\n if (!matches)\n return result;\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:';\n result.hostname = matches[6] || 'taro.com';\n result.port = matches[8] || '';\n result.pathname = matches[9] || '/';\n result.search = matches[10] || '';\n result.hash = matches[12] || '';\n result.href = url;\n result.origin = result.protocol + '//' + result.hostname;\n result.host = result.hostname + (result.port ? `:${result.port}` : '');\n return result;\n}\nfunction parseUrlBase(url, base) {\n const VALID_URL = /^(https?:)\\/\\//i;\n let fullUrl = '';\n let parsedBase = null;\n if (!isUndefined(base)) {\n base = String(base).trim();\n if (!VALID_URL.test(base))\n throw new TypeError(`Failed to construct 'URL': Invalid base URL`);\n parsedBase = parseUrl(base);\n }\n url = String(url).trim();\n if (VALID_URL.test(url)) {\n fullUrl = url;\n }\n else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url;\n }\n else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`);\n }\n }\n else {\n fullUrl = parsedBase.href;\n }\n }\n else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n }\n return parseUrl(fullUrl);\n}\n\nclass AnchorElement extends TaroElement {\n get href() {\n var _a;\n return (_a = this.props[\"href\" /* AnchorElementAttrs.HREF */]) !== null && _a !== void 0 ? _a : '';\n }\n set href(val) {\n this.setAttribute(\"href\" /* AnchorElementAttrs.HREF */, val);\n }\n get protocol() {\n var _a;\n return (_a = this.props[\"protocol\" /* AnchorElementAttrs.PROTOCOL */]) !== null && _a !== void 0 ? _a : '';\n }\n get host() {\n var _a;\n return (_a = this.props[\"host\" /* AnchorElementAttrs.HOST */]) !== null && _a !== void 0 ? _a : '';\n }\n get search() {\n var _a;\n return (_a = this.props[\"search\" /* AnchorElementAttrs.SEARCH */]) !== null && _a !== void 0 ? _a : '';\n }\n get hash() {\n var _a;\n return (_a = this.props[\"hash\" /* AnchorElementAttrs.HASH */]) !== null && _a !== void 0 ? _a : '';\n }\n get hostname() {\n var _a;\n return (_a = this.props[\"hostname\" /* AnchorElementAttrs.HOSTNAME */]) !== null && _a !== void 0 ? _a : '';\n }\n get port() {\n var _a;\n return (_a = this.props[\"port\" /* AnchorElementAttrs.PORT */]) !== null && _a !== void 0 ? _a : '';\n }\n get pathname() {\n var _a;\n return (_a = this.props[\"pathname\" /* AnchorElementAttrs.PATHNAME */]) !== null && _a !== void 0 ? _a : '';\n }\n setAttribute(qualifiedName, value) {\n if (qualifiedName === \"href\" /* AnchorElementAttrs.HREF */) {\n const willSetAttr = parseUrl(value);\n for (const k in willSetAttr) {\n super.setAttribute(k, willSetAttr[k]);\n }\n }\n else {\n super.setAttribute(qualifiedName, value);\n }\n }\n}\n\nclass TransferElement extends TaroElement {\n constructor(dataName) {\n super();\n this.dataName = dataName;\n this.isTransferElement = true;\n }\n get _path() {\n return this.dataName;\n }\n}\n\nclass TaroDocument extends TaroElement {\n constructor() {\n super();\n this.createEvent = createEvent;\n this.nodeType = 9 /* NodeType.DOCUMENT_NODE */;\n this.nodeName = DOCUMENT_ELEMENT_NAME;\n }\n createElement(type) {\n const nodeName = type.toLowerCase();\n let element;\n switch (true) {\n case nodeName === ROOT_STR:\n element = new TaroRootElement();\n return element;\n case controlledComponent.has(nodeName):\n element = new FormElement();\n break;\n case nodeName === A:\n element = new AnchorElement();\n break;\n case nodeName === 'page-meta':\n case nodeName === 'navigation-bar':\n element = new TransferElement(toCamelCase(nodeName));\n break;\n default:\n element = new TaroElement();\n break;\n }\n element.nodeName = nodeName;\n element.tagName = type.toUpperCase();\n return element;\n }\n // an ugly fake createElementNS to deal with @vue/runtime-dom's\n // support mounting app to svg container since vue@3.0.8\n createElementNS(_svgNS, type) {\n return this.createElement(type);\n }\n createTextNode(text) {\n return new TaroText(text);\n }\n getElementById(id) {\n const el = eventSource.get(id);\n return isUndefined(el) ? null : el;\n }\n querySelector(query) {\n // 为了 Vue3 的乞丐版实现\n if (/^#/.test(query)) {\n return this.getElementById(query.slice(1));\n }\n return null;\n }\n querySelectorAll() {\n // fake hack\n return [];\n }\n // @TODO: @PERF: 在 hydrate 移除掉空的 node\n createComment() {\n const textnode = new TaroText('');\n textnode.nodeName = COMMENT;\n return textnode;\n }\n get defaultView() {\n return env.window;\n }\n}\n\nfunction createDocument() {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument();\n const documentCreateElement = doc.createElement.bind(doc);\n const html = documentCreateElement(HTML);\n const head = documentCreateElement(HEAD);\n const body = documentCreateElement(BODY);\n const app = documentCreateElement(APP);\n app.id = APP;\n const container = documentCreateElement(CONTAINER); // 多包一层主要为了兼容 vue\n doc.appendChild(html);\n html.appendChild(head);\n html.appendChild(body);\n body.appendChild(container);\n container.appendChild(app);\n doc.documentElement = html;\n doc.head = head;\n doc.body = body;\n return doc;\n}\nconst document$1 = process.env.TARO_PLATFORM === 'web' ? env.document : (env.document = createDocument());\n\nconst getComputedStyle = process.env.TARO_PLATFORM === 'web' ? env.window.getComputedStyle : function (element) {\n return element.style;\n};\n\nconst eventCenter = hooks.call('getEventCenter', Events);\n\n/**\n * 一个小型缓存池,用于在切换页面时,存储一些上下文信息\n */\nclass RuntimeCache {\n constructor(name) {\n this.cache = new Map();\n this.name = name;\n }\n has(identifier) {\n return this.cache.has(identifier);\n }\n set(identifier, ctx) {\n if (identifier && ctx) {\n this.cache.set(identifier, ctx);\n }\n }\n get(identifier) {\n if (this.has(identifier))\n return this.cache.get(identifier);\n }\n delete(identifier) {\n this.cache.delete(identifier);\n }\n}\n\nvar _TaroHistory_instances, _TaroHistory_location, _TaroHistory_stack, _TaroHistory_cur, _TaroHistory_window, _TaroHistory_reset;\nconst cache$1 = new RuntimeCache('history');\nclass TaroHistory extends Events {\n constructor(location, options) {\n super();\n _TaroHistory_instances.add(this);\n /* private property */\n _TaroHistory_location.set(this, void 0);\n _TaroHistory_stack.set(this, []);\n _TaroHistory_cur.set(this, 0);\n _TaroHistory_window.set(this, void 0);\n __classPrivateFieldSet(this, _TaroHistory_window, options.window, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_location, location, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").on('__record_history__', (href) => {\n var _a;\n __classPrivateFieldSet(this, _TaroHistory_cur, (_a = __classPrivateFieldGet(this, _TaroHistory_cur, \"f\"), _a++, _a), \"f\");\n __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, \"f\")), \"f\");\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").push({\n state: null,\n title: '',\n url: href\n });\n }, null);\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").on('__reset_history__', (href) => {\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this, href);\n }, null);\n // 切换上下文行为\n this.on(CONTEXT_ACTIONS.INIT, () => {\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n cache$1.set(pageId, {\n location: __classPrivateFieldGet(this, _TaroHistory_location, \"f\"),\n stack: __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(),\n cur: __classPrivateFieldGet(this, _TaroHistory_cur, \"f\")\n });\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n if (cache$1.has(pageId)) {\n const ctx = cache$1.get(pageId);\n __classPrivateFieldSet(this, _TaroHistory_location, ctx.location, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_stack, ctx.stack, \"f\");\n __classPrivateFieldSet(this, _TaroHistory_cur, ctx.cur, \"f\");\n }\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n cache$1.delete(pageId);\n }, null);\n __classPrivateFieldGet(this, _TaroHistory_instances, \"m\", _TaroHistory_reset).call(this);\n }\n /* public property */\n get length() {\n return __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").length;\n }\n get state() {\n return __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")].state;\n }\n /* public method */\n go(delta) {\n if (!isNumber(delta) || isNaN(delta))\n return;\n let targetIdx = __classPrivateFieldGet(this, _TaroHistory_cur, \"f\") + delta;\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);\n __classPrivateFieldSet(this, _TaroHistory_cur, targetIdx, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")].url);\n __classPrivateFieldGet(this, _TaroHistory_window, \"f\").trigger('popstate', __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")]);\n }\n back() {\n this.go(-1);\n }\n forward() {\n this.go(1);\n }\n pushState(state, title, url) {\n if (!url || !isString(url))\n return;\n __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, \"f\") + 1), \"f\");\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\").push({\n state,\n title,\n url\n });\n __classPrivateFieldSet(this, _TaroHistory_cur, this.length - 1, \"f\");\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', url);\n }\n replaceState(state, title, url) {\n if (!url || !isString(url))\n return;\n __classPrivateFieldGet(this, _TaroHistory_stack, \"f\")[__classPrivateFieldGet(this, _TaroHistory_cur, \"f\")] = {\n state,\n title,\n url\n };\n __classPrivateFieldGet(this, _TaroHistory_location, \"f\").trigger('__set_href_without_history__', url);\n }\n // For debug\n get cache() {\n return cache$1;\n }\n}\n_TaroHistory_location = new WeakMap(), _TaroHistory_stack = new WeakMap(), _TaroHistory_cur = new WeakMap(), _TaroHistory_window = new WeakMap(), _TaroHistory_instances = new WeakSet(), _TaroHistory_reset = function _TaroHistory_reset(href = '') {\n __classPrivateFieldSet(this, _TaroHistory_stack, [\n {\n state: null,\n title: '',\n url: href || __classPrivateFieldGet(this, _TaroHistory_location, \"f\").href\n }\n ], \"f\");\n __classPrivateFieldSet(this, _TaroHistory_cur, 0, \"f\");\n};\nconst History = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory;\n\nconst Current = {\n app: null,\n router: null,\n page: null\n};\nconst getCurrentInstance = () => Current;\n\nvar _TaroLocation_instances, _TaroLocation_url, _TaroLocation_noCheckUrl, _TaroLocation_window, _TaroLocation_reset, _TaroLocation_getPreValue, _TaroLocation_rollBack, _TaroLocation_recordHistory, _TaroLocation_checkUrlChange;\nconst INIT_URL = 'https://taro.com';\nconst cache = new RuntimeCache('location');\nclass TaroLocation extends Events {\n constructor(options) {\n super();\n _TaroLocation_instances.add(this);\n /* private property */\n _TaroLocation_url.set(this, new URL(INIT_URL));\n _TaroLocation_noCheckUrl.set(this, false);\n _TaroLocation_window.set(this, void 0);\n __classPrivateFieldSet(this, _TaroLocation_window, options.window, \"f\");\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_reset).call(this);\n this.on('__set_href_without_history__', (href) => {\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, \"f\");\n const lastHash = __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash;\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = generateFullUrl(href);\n if (lastHash !== __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash) {\n __classPrivateFieldGet(this, _TaroLocation_window, \"f\").trigger('hashchange');\n }\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, \"f\");\n }, null);\n // 切换上下文行为\n this.on(CONTEXT_ACTIONS.INIT, () => {\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_reset).call(this);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n cache.set(pageId, {\n lastHref: this.href,\n });\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId);\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, \"f\");\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = ctx.lastHref;\n __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, \"f\");\n }\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n cache.delete(pageId);\n }, null);\n }\n /* public property */\n get protocol() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").protocol;\n }\n set protocol(val) {\n const REG = /^(http|https):$/i;\n if (!val || !isString(val) || !REG.test(val.trim()))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").protocol = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get host() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").host;\n }\n set host(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").host = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get hostname() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hostname;\n }\n set hostname(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hostname = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get port() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").port;\n }\n set port(val) {\n const xVal = Number((val = val.trim()));\n if (!isNumber(xVal) || xVal <= 0)\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").port = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get pathname() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").pathname;\n }\n set pathname(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").pathname = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get search() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").search;\n }\n set search(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n val = val.startsWith('?') ? val : `?${val}`;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").search = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get hash() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash;\n }\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash(val) {\n if (!val || !isString(val))\n return;\n val = val.trim();\n val = val.startsWith('#') ? val : `#${val}`;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").hash = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get href() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href;\n }\n set href(val) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim())))\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n get origin() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\").origin;\n }\n set origin(val) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim())))\n return;\n const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_getPreValue).call(this);\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").origin = val;\n if (__classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_checkUrlChange).call(this, preValue))\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_recordHistory).call(this);\n }\n /* public method */\n assign() {\n warn(true, '小程序环境中调用location.assign()无效.');\n }\n reload() {\n warn(true, '小程序环境中调用location.reload()无效.');\n }\n replace(url) {\n this.trigger('__set_href_without_history__', url);\n }\n toString() {\n return this.href;\n }\n // For debug\n get cache() {\n return cache;\n }\n}\n_TaroLocation_url = new WeakMap(), _TaroLocation_noCheckUrl = new WeakMap(), _TaroLocation_window = new WeakMap(), _TaroLocation_instances = new WeakSet(), _TaroLocation_reset = function _TaroLocation_reset() {\n const Current = getCurrentInstance();\n const router = Current.router;\n if (router) {\n const { path, params } = router;\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`;\n });\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;\n __classPrivateFieldSet(this, _TaroLocation_url, new URL(url), \"f\");\n this.trigger('__reset_history__', this.href);\n }\n}, _TaroLocation_getPreValue = function _TaroLocation_getPreValue() {\n return __classPrivateFieldGet(this, _TaroLocation_url, \"f\")._toRaw();\n}, _TaroLocation_rollBack = function _TaroLocation_rollBack(href) {\n __classPrivateFieldGet(this, _TaroLocation_url, \"f\").href = href;\n}, _TaroLocation_recordHistory = function _TaroLocation_recordHistory() {\n this.trigger('__record_history__', this.href);\n}, _TaroLocation_checkUrlChange = function _TaroLocation_checkUrlChange(preValue) {\n if (__classPrivateFieldGet(this, _TaroLocation_noCheckUrl, \"f\")) {\n return false;\n }\n const { protocol, hostname, port, pathname, search, hash } = __classPrivateFieldGet(this, _TaroLocation_url, \"f\")._toRaw();\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_rollBack).call(this, preValue.href);\n return false;\n }\n // pathname\n if (pathname !== preValue.pathname) {\n return true;\n }\n // search\n if (search !== preValue.search) {\n return true;\n }\n // hashchange\n if (hash !== preValue.hash) {\n __classPrivateFieldGet(this, _TaroLocation_window, \"f\").trigger('hashchange');\n return true;\n }\n __classPrivateFieldGet(this, _TaroLocation_instances, \"m\", _TaroLocation_rollBack).call(this, preValue.href);\n return false;\n};\nconst Location = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation;\nfunction generateFullUrl(val = '') {\n const origin = INIT_URL;\n if (/^[/?#]/.test(val)) {\n return origin + val;\n }\n return val;\n}\n\nconst machine = 'Macintosh';\nconst arch = 'Intel Mac OS X 10_14_5';\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';\nconst msg = '(' + machine + '; ' + arch + ') ' + engine;\nconst nav = process.env.TARO_PLATFORM === 'web' ? env.window.navigator : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: ''\n};\n\n// https://github.com/myrne/performance-now\nlet now;\n(function () {\n let loadTime;\n if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n now = () => performance.now();\n }\n else if (Date.now) {\n loadTime = Date.now();\n now = () => Date.now() - loadTime;\n }\n else {\n loadTime = new Date().getTime();\n now = () => new Date().getTime() - loadTime;\n }\n})();\nlet lastTime = 0;\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame !== null ? requestAnimationFrame : function (callback) {\n const _now = now();\n const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () { callback(lastTime = nextTime); }, nextTime - _now);\n};\nconst _caf = typeof cancelAnimationFrame !== 'undefined' && cancelAnimationFrame !== null\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed);\n };\n\nclass TaroWindow extends Events {\n constructor() {\n super();\n this.navigator = nav;\n this.requestAnimationFrame = _raf;\n this.cancelAnimationFrame = _caf;\n this.getComputedStyle = getComputedStyle;\n const globalProperties = [\n ...Object.getOwnPropertyNames(global || {}),\n ...Object.getOwnPropertySymbols(global || {})\n ];\n globalProperties.forEach(property => {\n if (property === 'atob' || property === 'document')\n return;\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // 防止小程序环境下,window 上的某些 get 属性在赋值时报错\n try {\n this[property] = global[property];\n }\n catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`);\n }\n }\n }\n });\n this.Date || (this.Date = Date);\n // 应用启动时,提供给需要读取历史信息的库使用\n this.location = new Location({ window: this });\n // @ts-ignore\n this.history = new History(this.location, { window: this });\n this.initEvent();\n }\n initEvent() {\n const _location = this.location;\n const _history = this.history;\n this.on(CONTEXT_ACTIONS.INIT, (pageId) => {\n // 页面onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n // 页面onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n // 页面onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n }, null);\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n // 页面onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n _history.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n }, null);\n }\n get document() {\n return env.document;\n }\n addEventListener(event, callback) {\n if (!isString(event))\n return;\n this.on(event, callback, null);\n }\n removeEventListener(event, callback) {\n if (!isString(event))\n return;\n this.off(event, callback, null);\n }\n setTimeout(...args) {\n return setTimeout(...args);\n }\n clearTimeout(...args) {\n return clearTimeout(...args);\n }\n}\nconst window$1 = process.env.TARO_PLATFORM === 'web' ? env.window : (env.window = new TaroWindow());\nconst location = window$1.location;\nconst history = window$1.history;\n\n// for Vue3\nclass SVGElement extends TaroElement {\n}\n\n// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nconst addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nconst hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nconst stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nconst stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nconst stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nconst getHomePage = (path = '', basename = '', customRoutes = {}, entryPagePath = '') => {\n var _a;\n const routePath = addLeadingSlash(stripBasename(path, basename));\n const alias = ((_a = Object.entries(customRoutes).find(([key]) => key === routePath)) === null || _a === void 0 ? void 0 : _a[1]) || routePath;\n return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename;\n};\nconst getCurrentPage = (routerMode = 'hash', basename = '/') => {\n const pagePath = routerMode === 'hash'\n ? location.hash.slice(1).split('?')[0]\n : location.pathname;\n return addLeadingSlash(stripBasename(pagePath, basename));\n};\n\n/* eslint-disable dot-notation */\nconst instances = new Map();\nconst pageId = incrementId();\nfunction injectPageInstance(inst, id) {\n hooks.call('mergePageInstance', instances.get(id), inst);\n instances.set(id, inst);\n}\nfunction getPageInstance(id) {\n return instances.get(id);\n}\nfunction removePageInstance(id) {\n instances.delete(id);\n}\nfunction safeExecute(path, lifecycle, ...args) {\n const instance = instances.get(path);\n if (instance == null) {\n return;\n }\n const func = hooks.call('getLifecycle', instance, lifecycle);\n if (isArray(func)) {\n const res = func.map(fn => fn.apply(instance, args));\n return res[0];\n }\n if (!isFunction(func)) {\n return;\n }\n return func.apply(instance, args);\n}\nfunction stringify(obj) {\n if (obj == null) {\n return '';\n }\n const path = Object.keys(obj).map((key) => {\n return key + '=' + obj[key];\n }).join('&');\n return path === '' ? path : '?' + path;\n}\nfunction getPath(id, options) {\n const idx = id.indexOf('?');\n if (process.env.TARO_PLATFORM === 'web') {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify((options === null || options === void 0 ? void 0 : options.stamp) ? { stamp: options.stamp } : {})}`;\n }\n else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;\n }\n}\nfunction getOnReadyEventKey(path) {\n return path + '.' + ON_READY;\n}\nfunction getOnShowEventKey(path) {\n return path + '.' + ON_SHOW;\n}\nfunction getOnHideEventKey(path) {\n return path + '.' + ON_HIDE;\n}\nfunction createPageConfig(component, pageName, data, pageConfig) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName !== null && pageName !== void 0 ? pageName : `taro_page_${pageId()}`;\n const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES,] = hooks.call('getMiniLifecycleImpl').page;\n let pageElement = null;\n let unmounting = false;\n let prepareMountList = [];\n function setCurrentRouter(page) {\n const router = process.env.TARO_PLATFORM === 'web' ? page.$taroPath : page.route || page.__route__ || page.$taroPath;\n Current.router = {\n params: page.$taroParams,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id)\n };\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState;\n }\n }\n let loadResolver;\n let hasLoaded;\n const config = {\n [ONLOAD](options = {}, cb) {\n hasLoaded = new Promise(resolve => { loadResolver = resolve; });\n perf.start(PAGE_INIT);\n Current.page = this;\n this.config = pageConfig || {};\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });\n const $taroPath = this.$taroPath = getPath(id, uniqueOptions);\n if (process.env.TARO_PLATFORM === 'web') {\n config.path = $taroPath;\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions;\n }\n setCurrentRouter(this);\n // 初始化当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.INIT, $taroPath);\n }\n const mount = () => {\n Current.app.mount(component, $taroPath, () => {\n pageElement = env.document.getElementById($taroPath);\n ensure(pageElement !== null, '没有找到页面实例。');\n safeExecute($taroPath, ON_LOAD, this.$taroParams);\n loadResolver();\n if (process.env.TARO_PLATFORM !== 'web') {\n pageElement.ctx = this;\n pageElement.performUpdate(true, cb);\n }\n else {\n isFunction(cb) && cb();\n }\n });\n };\n if (unmounting) {\n prepareMountList.push(mount);\n }\n else {\n mount();\n }\n },\n [ONUNLOAD]() {\n const $taroPath = this.$taroPath;\n // 销毁当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath);\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD);\n unmounting = true;\n Current.app.unmount($taroPath, () => {\n unmounting = false;\n instances.delete($taroPath);\n if (pageElement) {\n pageElement.ctx = null;\n pageElement = null;\n }\n if (prepareMountList.length) {\n prepareMountList.forEach(fn => fn());\n prepareMountList = [];\n }\n });\n },\n [ONREADY]() {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY);\n // 通过事件触发子组件的生命周期\n _raf(() => eventCenter.trigger(getOnReadyEventKey(id)));\n this.onReady.called = true;\n });\n },\n [ONSHOW](options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this;\n setCurrentRouter(this);\n // 恢复上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options);\n // 通过事件触发子组件的生命周期\n _raf(() => eventCenter.trigger(getOnShowEventKey(id)));\n });\n },\n [ONHIDE]() {\n // 缓存当前页面上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window$1.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null;\n Current.router = null;\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE);\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id));\n }\n };\n if (process.env.TARO_PLATFORM === 'web') {\n config.getOpenerEventChannel = () => {\n return EventChannel.pageChannel;\n };\n }\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false;\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true;\n return '';\n });\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);\n if (isDefer) {\n hasLoaded.then(exec);\n }\n else {\n return exec();\n }\n };\n });\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n var _a;\n if (component[lifecycle] ||\n ((_a = component.prototype) === null || _a === void 0 ? void 0 : _a[lifecycle]) ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig[lifecycle.replace(/^on/, 'enable')])) {\n config[lifecycle] = function (...args) {\n var _a;\n const target = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.target;\n if (target === null || target === void 0 ? void 0 : target.id) {\n const id = target.id;\n const element = env.document.getElementById(id);\n if (element) {\n target.dataset = element.dataset;\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args);\n };\n }\n });\n config.eh = eventHandler;\n if (!isUndefined(data)) {\n config.data = data;\n }\n hooks.call('modifyPageObject', config);\n return config;\n}\nfunction createComponentConfig(component, componentName, data) {\n const id = componentName !== null && componentName !== void 0 ? componentName : `taro_component_${pageId()}`;\n let componentElement = null;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n const config = {\n [ATTACHED]() {\n var _a;\n perf.start(PAGE_INIT);\n this.pageIdCache = ((_a = this.getPageId) === null || _a === void 0 ? void 0 : _a.call(this)) || pageId();\n const path = getPath(id, { id: this.pageIdCache });\n Current.app.mount(component, path, () => {\n componentElement = env.document.getElementById(path);\n ensure(componentElement !== null, '没有找到组件实例。');\n this.$taroInstances = instances.get(path);\n safeExecute(path, ON_LOAD);\n if (process.env.TARO_PLATFORM !== 'web') {\n componentElement.ctx = this;\n componentElement.performUpdate(true);\n }\n });\n },\n [DETACHED]() {\n const path = getPath(id, { id: this.pageIdCache });\n Current.app.unmount(path, () => {\n instances.delete(path);\n if (componentElement) {\n componentElement.ctx = null;\n }\n });\n },\n methods: {\n eh: eventHandler\n }\n };\n if (!isUndefined(data)) {\n config.data = data;\n }\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n var _a;\n config[key] = (_a = component[key]) !== null && _a !== void 0 ? _a : EMPTY_OBJ;\n });\n return config;\n}\nfunction createRecursiveComponentConfig(componentName) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER;\n const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED]() {\n var _a, _b;\n const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = this;\n }\n }\n },\n [DETACHED]() {\n var _a, _b;\n const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n if (isString(componentId)) {\n customWrapperCache.delete(componentId);\n const el = env.document.getElementById(componentId);\n if (el) {\n el.ctx = null;\n }\n }\n }\n }\n : EMPTY_OBJ;\n return hooks.call('modifyRecursiveComponentConfig', Object.assign({ properties: {\n i: {\n type: Object,\n value: {\n [\"nn\" /* Shortcuts.NodeName */]: getComponentsAlias$1(internalComponents)[VIEW]._num\n }\n },\n l: {\n type: String,\n value: ''\n }\n }, options: {\n addGlobalClass: true,\n virtualHost: !isCustomWrapper\n }, methods: {\n eh: eventHandler\n } }, lifeCycles), { isCustomWrapper });\n}\n\nconst TIMEOUT = 100;\nconst nextTick = (cb, ctx) => {\n const beginTime = Date.now();\n const router = Current.router;\n const timerFunc = () => {\n setTimeout(function () {\n ctx ? cb.call(ctx) : cb();\n }, 1);\n };\n if (router === null)\n return timerFunc();\n const path = router.$taroPath;\n /**\n * 三种情况\n * 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms\n * 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车\n * 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。\n */\n function next() {\n var _a, _b, _c;\n const pageElement = env.document.getElementById(path);\n if (pageElement === null || pageElement === void 0 ? void 0 : pageElement.pendingUpdate) {\n if (process.env.TARO_PLATFORM === 'web') {\n // eslint-disable-next-line dot-notation\n (_c = (_b = (_a = pageElement.firstChild) === null || _a === void 0 ? void 0 : _a['componentOnReady']) === null || _b === void 0 ? void 0 : _b.call(_a).then(() => {\n timerFunc();\n })) !== null && _c !== void 0 ? _c : timerFunc();\n }\n else {\n pageElement.enqueueUpdateCallback(cb, ctx);\n }\n }\n else if (Date.now() - beginTime > TIMEOUT) {\n timerFunc();\n }\n else {\n setTimeout(() => next(), 20);\n }\n }\n next();\n};\n\nfunction handleArrayFindPolyfill() {\n if (!isFunction(Array.prototype.find)) {\n Object.defineProperty(Array.prototype, 'find', {\n value(predicate) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n const o = Object(this);\n const len = o.length >>> 0;\n if (!isFunction(predicate)) {\n throw new TypeError('predicate must be a function');\n }\n const thisArg = arguments[1];\n let k = 0;\n while (k < len) {\n const kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n k++;\n }\n return undefined;\n }\n });\n }\n}\nfunction handleArrayIncludesPolyfill() {\n if (!isFunction(Array.prototype.includes)) {\n Object.defineProperty(Array.prototype, 'includes', {\n value(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n const o = Object(this);\n const len = o.length >>> 0;\n if (len === 0) {\n return false;\n }\n const n = fromIndex | 0;\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n while (k < len) {\n if (o[k] === searchElement) {\n return true;\n }\n k++;\n }\n return false;\n }\n });\n }\n}\n\n/* eslint-disable eqeqeq */\nfunction handleIntersectionObserverPolyfill() {\n // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n }\n else {\n handleIntersectionObserverObjectPolyfill();\n }\n}\nfunction handleIntersectionObserverObjectPolyfill() {\n const document = window.document;\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n // Calculates the intersection ratio.\n const targetRect = this.boundingClientRect;\n const targetArea = targetRect.width * targetRect.height;\n const intersectionRect = this.intersectionRect;\n const intersectionArea = intersectionRect.width * intersectionRect.height;\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n }\n else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, options = {}) {\n if (!isFunction(callback)) {\n throw new Error('callback must be a function');\n }\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n const isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n if (isTargetAlreadyObserved)\n return;\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n this._registerInstance();\n this._observationTargets.push({ element: target, entry: null });\n this._monitorIntersections();\n this._checkForIntersections();\n };\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets =\n this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n };\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n };\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n const records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n let threshold = opt_threshold || [0];\n if (!Array.isArray(threshold))\n threshold = [threshold];\n return threshold.sort().filter(function (t, i, a) {\n if (!isNumber(t) || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n };\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n const marginString = opt_rootMargin || '0px';\n const margins = marginString.split(/\\s+/).map(function (margin) {\n const parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return { value: parseFloat(parts[1]), unit: parts[2] };\n });\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\n };\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n };\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n const rootIsInDom = this._rootIsInDom();\n const rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n this._observationTargets.forEach(function (item) {\n const target = item.element;\n const targetRect = getBoundingClientRect(target);\n const rootContainsTarget = this._rootContainsTarget(target);\n const oldEntry = item.entry;\n const intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n const newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect,\n intersectionRatio: -1,\n isIntersecting: false,\n });\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n }\n else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n }\n else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display === 'none')\n return;\n const targetRect = getBoundingClientRect(target);\n let intersectionRect = targetRect;\n let parent = getParentNode(target);\n let atRoot = false;\n while (!atRoot) {\n let parentRect = null;\n const parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display === 'none')\n return;\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n }\n else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect)\n break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n };\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n let rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n }\n else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n const html = document.documentElement;\n const body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n };\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n const margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit === 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n const newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n return newRect;\n };\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold =\n function (oldEntry, newEntry) {\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n const oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n const newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n // Ignore unchanged ratios\n if (oldRatio === newRatio)\n return;\n for (let i = 0; i < this.thresholds.length; i++) {\n const threshold = this.thresholds[i];\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n };\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n };\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n if (isFunction(node.addEventListener)) {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (isFunction(node.attachEvent)) {\n node.attachEvent('on' + event, fn);\n }\n }\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (isFunction(node.removeEventListener)) {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (isFunction(node.detatchEvent)) {\n node.detatchEvent('on' + event, fn);\n }\n }\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n const top = Math.max(rect1.top, rect2.top);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n const left = Math.max(rect1.left, rect2.left);\n const right = Math.min(rect1.right, rect2.right);\n const width = right - left;\n const height = bottom - top;\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n let rect;\n try {\n rect = el.getBoundingClientRect();\n }\n catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n if (!rect)\n return getEmptyRect();\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n /**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n let node = child;\n while (node) {\n if (node == parent)\n return true;\n node = getParentNode(node);\n }\n return false;\n }\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n const parent = node.parentNode;\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a <slot>, return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n return parent;\n }\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n}\n\nfunction handleObjectAssignPolyfill() {\n if (!isFunction(Object.assign)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.assign = function (target) {\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n const to = Object(target);\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index];\n if (nextSource != null) { // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction handleObjectEntriesPolyfill() {\n if (!isFunction(Object.entries)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.entries = function (obj) {\n if (obj == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n const to = [];\n if (obj != null) { // Skip over if undefined or null\n for (const key in obj) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n to.push([key, obj[key]]);\n }\n }\n }\n return to;\n };\n }\n}\nfunction handleObjectDefinePropertyPolyfill() {\n if (!isFunction(Object.defineProperties)) {\n Object.defineProperties = function (obj, properties) {\n function convertToDescriptor(desc) {\n function hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n if (!isObject(desc)) {\n throw new TypeError('bad desc');\n }\n const d = {};\n if (hasProperty(desc, 'enumerable'))\n d.enumerable = !!desc.enumerable;\n if (hasProperty(desc, 'configurable')) {\n d.configurable = !!desc.configurable;\n }\n if (hasProperty(desc, 'value'))\n d.value = desc.value;\n if (hasProperty(desc, 'writable'))\n d.writable = !!desc.writable;\n if (hasProperty(desc, 'get')) {\n const g = desc.get;\n if (!isFunction(g) && !isUndefined(g)) {\n throw new TypeError('bad get');\n }\n d.get = g;\n }\n if (hasProperty(desc, 'set')) {\n const s = desc.set;\n if (!isFunction(s) && !isUndefined(s)) {\n throw new TypeError('bad set');\n }\n d.set = s;\n }\n if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) {\n throw new TypeError('identity-confused descriptor');\n }\n return d;\n }\n if (!isObject(obj))\n throw new TypeError('bad obj');\n properties = Object(properties);\n const keys = Object.keys(properties);\n const descs = [];\n for (let i = 0; i < keys.length; i++) {\n descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);\n }\n for (let i = 0; i < descs.length; i++) {\n Object.defineProperty(obj, descs[i][0], descs[i][1]);\n }\n return obj;\n };\n }\n}\n\nfunction handlePolyfill() {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.assign') {\n handleObjectAssignPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.entries') {\n handleObjectEntriesPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.defineProperty') {\n handleObjectDefinePropertyPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.find') {\n handleArrayFindPolyfill();\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.includes') {\n handleArrayIncludesPolyfill();\n }\n // Exit early if we're not running in a browser.\n if (process.env.TARO_PLATFORM === 'web' && isObject(window)) {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'IntersectionObserver') {\n handleIntersectionObserverPolyfill();\n }\n }\n}\nif (process.env.SUPPORT_TARO_POLYFILL !== 'disabled' && process.env.TARO_PLATFORM !== 'web') {\n handlePolyfill();\n}\n\nexport { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, Current, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, FormElement, HEAD, HOOKS_APP_ID, HTML, History, ID, INPUT, KEY_CODE, Location, MutationObserver$1 as MutationObserver, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, SVGElement, Style, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, TaroElement, TaroEvent, TaroNode, TaroRootElement, TaroText, UID, URL, URLSearchParams, VALUE, VIEW, addLeadingSlash, _caf as cancelAnimationFrame, createComponentConfig, createEvent, createPageConfig, createRecursiveComponentConfig, document$1 as document, env, eventCenter, eventHandler, eventSource, getComputedStyle, getCurrentInstance, getCurrentPage, getHomePage, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, handlePolyfill, hasBasename, history, hydrate, incrementId, injectPageInstance, isHasExtractProp, location, nav as navigator, nextTick, now, options, parseUrl, removePageInstance, _raf as requestAnimationFrame, safeExecute, stringify, stripBasename, stripSuffix, stripTrailing, window$1 as window };\n//# sourceMappingURL=runtime.esm.js.map\n","'use strict';\n\nconst DEFAULT_EMPTY_ARRAY = '[]';\nconst NO_DEFAULT_VALUE = '';\nconst DEFAULT_TRUE = '!0';\nconst DEFAULT_FALSE = '!1';\nconst touchEvents = {\n bindTouchStart: NO_DEFAULT_VALUE,\n bindTouchMove: NO_DEFAULT_VALUE,\n bindTouchEnd: NO_DEFAULT_VALUE,\n bindTouchCancel: NO_DEFAULT_VALUE,\n bindLongTap: NO_DEFAULT_VALUE\n};\nconst animation = {\n animation: NO_DEFAULT_VALUE,\n bindAnimationStart: NO_DEFAULT_VALUE,\n bindAnimationIteration: NO_DEFAULT_VALUE,\n bindAnimationEnd: NO_DEFAULT_VALUE,\n bindTransitionEnd: NO_DEFAULT_VALUE\n};\nfunction singleQuote(s) {\n return `'${s}'`;\n}\nconst View = Object.assign(Object.assign({ 'hover-class': singleQuote('none'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '50', 'hover-stay-time': '400' }, touchEvents), animation);\nconst Icon = {\n type: NO_DEFAULT_VALUE,\n size: '23',\n color: NO_DEFAULT_VALUE\n};\nconst MapComp = Object.assign({ longitude: NO_DEFAULT_VALUE, latitude: NO_DEFAULT_VALUE, scale: '16', markers: DEFAULT_EMPTY_ARRAY, covers: NO_DEFAULT_VALUE, polyline: DEFAULT_EMPTY_ARRAY, circles: DEFAULT_EMPTY_ARRAY, controls: DEFAULT_EMPTY_ARRAY, 'include-points': DEFAULT_EMPTY_ARRAY, 'show-location': NO_DEFAULT_VALUE, 'layer-style': '1', bindMarkerTap: NO_DEFAULT_VALUE, bindControlTap: NO_DEFAULT_VALUE, bindCalloutTap: NO_DEFAULT_VALUE, bindUpdated: NO_DEFAULT_VALUE }, touchEvents);\nconst Progress = {\n percent: NO_DEFAULT_VALUE,\n 'stroke-width': '6',\n color: singleQuote('#09BB07'),\n activeColor: singleQuote('#09BB07'),\n backgroundColor: singleQuote('#EBEBEB'),\n active: DEFAULT_FALSE,\n 'active-mode': singleQuote('backwards'),\n 'show-info': DEFAULT_FALSE\n};\nconst RichText = {\n nodes: DEFAULT_EMPTY_ARRAY\n};\nconst Text = Object.assign({ selectable: DEFAULT_FALSE, space: NO_DEFAULT_VALUE, decode: DEFAULT_FALSE }, touchEvents);\nconst Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE, bindagreeprivacyauthorization: NO_DEFAULT_VALUE }, touchEvents);\nconst Checkbox = {\n value: NO_DEFAULT_VALUE,\n disabled: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst CheckboxGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Form = {\n 'report-submit': DEFAULT_FALSE,\n bindSubmit: NO_DEFAULT_VALUE,\n bindReset: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Input = {\n value: NO_DEFAULT_VALUE,\n type: singleQuote(NO_DEFAULT_VALUE),\n password: DEFAULT_FALSE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('input-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'cursor-spacing': '0',\n focus: DEFAULT_FALSE,\n 'confirm-type': singleQuote('done'),\n 'confirm-hold': DEFAULT_FALSE,\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindInput: NO_DEFAULT_VALUE,\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Label = Object.assign({ for: NO_DEFAULT_VALUE, name: NO_DEFAULT_VALUE }, touchEvents);\nconst Picker = {\n mode: singleQuote('selector'),\n disabled: NO_DEFAULT_VALUE,\n range: NO_DEFAULT_VALUE,\n 'range-key': NO_DEFAULT_VALUE,\n value: NO_DEFAULT_VALUE,\n start: NO_DEFAULT_VALUE,\n end: NO_DEFAULT_VALUE,\n fields: singleQuote('day'),\n 'custom-item': NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n bindCancel: NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n bindColumnChange: NO_DEFAULT_VALUE\n};\nconst PickerView = {\n value: NO_DEFAULT_VALUE,\n 'indicator-style': NO_DEFAULT_VALUE,\n 'indicator-class': NO_DEFAULT_VALUE,\n 'mask-style': NO_DEFAULT_VALUE,\n 'mask-class': NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst PickerViewColumn = {\n name: NO_DEFAULT_VALUE\n};\nconst Radio = {\n value: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst RadioGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Slider = {\n min: '0',\n max: '100',\n step: '1',\n disabled: NO_DEFAULT_VALUE,\n value: '0',\n activeColor: singleQuote('#1aad19'),\n backgroundColor: singleQuote('#e9e9e9'),\n 'block-size': '28',\n 'block-color': singleQuote('#ffffff'),\n 'show-value': DEFAULT_FALSE,\n bindChange: NO_DEFAULT_VALUE,\n bindChanging: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Switch = {\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n type: singleQuote('switch'),\n color: singleQuote('#04BE02'),\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Textarea = {\n value: NO_DEFAULT_VALUE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('textarea-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'auto-focus': DEFAULT_FALSE,\n focus: DEFAULT_FALSE,\n 'auto-height': DEFAULT_FALSE,\n fixed: DEFAULT_FALSE,\n 'cursor-spacing': '0',\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindLineChange: NO_DEFAULT_VALUE,\n bindInput: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst CoverImage = {\n src: NO_DEFAULT_VALUE,\n bindLoad: 'eh',\n bindError: 'eh'\n};\nconst CoverView = Object.assign({ 'scroll-top': DEFAULT_FALSE }, touchEvents);\nconst MovableArea = {\n 'scale-area': DEFAULT_FALSE\n};\nconst MovableView = Object.assign(Object.assign({ direction: 'none', inertia: DEFAULT_FALSE, 'out-of-bounds': DEFAULT_FALSE, x: NO_DEFAULT_VALUE, y: NO_DEFAULT_VALUE, damping: '20', friction: '2', disabled: NO_DEFAULT_VALUE, scale: DEFAULT_FALSE, 'scale-min': '0.5', 'scale-max': '10', 'scale-value': '1', bindChange: NO_DEFAULT_VALUE, bindScale: NO_DEFAULT_VALUE, bindHTouchMove: NO_DEFAULT_VALUE, bindVTouchMove: NO_DEFAULT_VALUE, width: singleQuote('10px'), height: singleQuote('10px') }, touchEvents), animation);\nconst ScrollView = Object.assign(Object.assign({ 'scroll-x': DEFAULT_FALSE, 'scroll-y': DEFAULT_FALSE, 'upper-threshold': '50', 'lower-threshold': '50', 'scroll-top': NO_DEFAULT_VALUE, 'scroll-left': NO_DEFAULT_VALUE, 'scroll-into-view': NO_DEFAULT_VALUE, 'scroll-with-animation': DEFAULT_FALSE, 'enable-back-to-top': DEFAULT_FALSE, bindScrollToUpper: NO_DEFAULT_VALUE, bindScrollToLower: NO_DEFAULT_VALUE, bindScroll: NO_DEFAULT_VALUE }, touchEvents), animation);\nconst Swiper = Object.assign({ 'indicator-dots': DEFAULT_FALSE, 'indicator-color': singleQuote('rgba(0, 0, 0, .3)'), 'indicator-active-color': singleQuote('#000000'), autoplay: DEFAULT_FALSE, current: '0', interval: '5000', duration: '500', circular: DEFAULT_FALSE, vertical: DEFAULT_FALSE, 'previous-margin': singleQuote('0px'), 'next-margin': singleQuote('0px'), 'display-multiple-items': '1', bindChange: NO_DEFAULT_VALUE, bindTransition: NO_DEFAULT_VALUE, bindAnimationFinish: NO_DEFAULT_VALUE }, touchEvents);\nconst SwiperItem = {\n 'item-id': NO_DEFAULT_VALUE\n};\nconst Navigator = {\n url: NO_DEFAULT_VALUE,\n 'open-type': singleQuote('navigate'),\n delta: '1',\n 'hover-class': singleQuote('navigator-hover'),\n 'hover-stop-propagation': DEFAULT_FALSE,\n 'hover-start-time': '50',\n 'hover-stay-time': '600',\n bindSuccess: NO_DEFAULT_VALUE,\n bindFail: NO_DEFAULT_VALUE,\n bindComplete: NO_DEFAULT_VALUE\n};\nconst Audio = {\n id: NO_DEFAULT_VALUE,\n src: NO_DEFAULT_VALUE,\n loop: DEFAULT_FALSE,\n controls: DEFAULT_FALSE,\n poster: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n author: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindPlay: NO_DEFAULT_VALUE,\n bindPause: NO_DEFAULT_VALUE,\n bindTimeUpdate: NO_DEFAULT_VALUE,\n bindEnded: NO_DEFAULT_VALUE\n};\nconst Camera = {\n 'device-position': singleQuote('back'),\n flash: singleQuote('auto'),\n bindStop: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Image = Object.assign({ src: NO_DEFAULT_VALUE, mode: singleQuote('scaleToFill'), 'lazy-load': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE, bindLoad: NO_DEFAULT_VALUE }, touchEvents);\nconst LivePlayer = Object.assign({ src: NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, muted: DEFAULT_FALSE, orientation: singleQuote('vertical'), 'object-fit': singleQuote('contain'), 'background-mute': DEFAULT_FALSE, 'min-cache': '1', 'max-cache': '3', bindStateChange: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindNetStatus: NO_DEFAULT_VALUE }, animation);\nconst Video = Object.assign({ src: NO_DEFAULT_VALUE, duration: NO_DEFAULT_VALUE, controls: DEFAULT_TRUE, 'danmu-list': NO_DEFAULT_VALUE, 'danmu-btn': NO_DEFAULT_VALUE, 'enable-danmu': NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, loop: DEFAULT_FALSE, muted: DEFAULT_FALSE, 'initial-time': '0', 'page-gesture': DEFAULT_FALSE, direction: NO_DEFAULT_VALUE, 'show-progress': DEFAULT_TRUE, 'show-fullscreen-btn': DEFAULT_TRUE, 'show-play-btn': DEFAULT_TRUE, 'show-center-play-btn': DEFAULT_TRUE, 'enable-progress-gesture': DEFAULT_TRUE, 'object-fit': singleQuote('contain'), poster: NO_DEFAULT_VALUE, 'show-mute-btn': DEFAULT_FALSE, bindPlay: NO_DEFAULT_VALUE, bindPause: NO_DEFAULT_VALUE, bindEnded: NO_DEFAULT_VALUE, bindTimeUpdate: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindWaiting: NO_DEFAULT_VALUE, bindError: NO_DEFAULT_VALUE }, animation);\nconst Canvas = Object.assign({ 'canvas-id': NO_DEFAULT_VALUE, 'disable-scroll': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE }, touchEvents);\nconst Ad = {\n 'unit-id': NO_DEFAULT_VALUE,\n 'ad-intervals': NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindClose: NO_DEFAULT_VALUE\n};\nconst WebView = {\n src: NO_DEFAULT_VALUE,\n bindMessage: NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Block = {};\n// For Vue,因为 slot 标签被 vue 占用了\nconst SlotView = {\n name: NO_DEFAULT_VALUE\n};\n// For React\n// Slot 和 SlotView 最终都会编译成 <view slot={{ i.name }} />\n// 因为 <slot name=\"{{ i.name }}\" /> 适用性没有前者高(无法添加类和样式)\n// 不给 View 直接加 slot 属性的原因是性能损耗\nconst Slot = {\n name: NO_DEFAULT_VALUE\n};\nconst NativeSlot = {\n name: NO_DEFAULT_VALUE\n};\nconst Script = {};\nconst internalComponents = {\n View,\n Icon,\n Progress,\n RichText,\n Text,\n Button,\n Checkbox,\n CheckboxGroup,\n Form,\n Input,\n Label,\n Picker,\n PickerView,\n PickerViewColumn,\n Radio,\n RadioGroup,\n Slider,\n Switch,\n CoverImage,\n Textarea,\n CoverView,\n MovableArea,\n MovableView,\n ScrollView,\n Swiper,\n SwiperItem,\n Navigator,\n Audio,\n Camera,\n Image,\n LivePlayer,\n Video,\n Canvas,\n Ad,\n WebView,\n Block,\n Map: MapComp,\n Slot,\n SlotView,\n NativeSlot,\n Script,\n};\nconst controlledComponent = new Set([\n 'input',\n 'checkbox',\n 'picker',\n 'picker-view',\n 'radio',\n 'slider',\n 'switch',\n 'textarea'\n]);\nconst focusComponents = new Set([\n 'input',\n 'textarea'\n]);\nconst voidElements = new Set([\n 'progress',\n 'icon',\n 'rich-text',\n 'input',\n 'textarea',\n 'slider',\n 'switch',\n 'audio',\n 'ad',\n 'official-account',\n 'open-data',\n 'navigation-bar'\n]);\nconst nestElements = new Map([\n ['view', -1],\n ['catch-view', -1],\n ['cover-view', -1],\n ['static-view', -1],\n ['pure-view', -1],\n ['block', -1],\n ['text', -1],\n ['static-text', 6],\n ['slot', 8],\n ['slot-view', 8],\n ['label', 6],\n ['form', 4],\n ['scroll-view', 4],\n ['swiper', 4],\n ['swiper-item', 4],\n]);\n\nexports.PLATFORM_TYPE = void 0;\n(function (PLATFORM_TYPE) {\n PLATFORM_TYPE[\"MINI\"] = \"mini\";\n PLATFORM_TYPE[\"WEB\"] = \"web\";\n PLATFORM_TYPE[\"RN\"] = \"rn\";\n PLATFORM_TYPE[\"HARMONY\"] = \"harmony\";\n PLATFORM_TYPE[\"QUICK\"] = \"quickapp\";\n})(exports.PLATFORM_TYPE || (exports.PLATFORM_TYPE = {}));\nconst PLATFORM_CONFIG_MAP = {\n h5: {\n type: exports.PLATFORM_TYPE.WEB\n },\n harmony: {\n type: exports.PLATFORM_TYPE.HARMONY\n },\n mini: {\n type: exports.PLATFORM_TYPE.MINI\n },\n rn: {\n type: exports.PLATFORM_TYPE.RN\n },\n quickapp: {\n type: exports.PLATFORM_TYPE.QUICK\n },\n};\n\nclass Events {\n constructor(opts) {\n var _a;\n this.callbacks = (_a = opts === null || opts === void 0 ? void 0 : opts.callbacks) !== null && _a !== void 0 ? _a : {};\n }\n on(eventName, callback, context) {\n let event, tail, _eventName;\n if (!callback) {\n return this;\n }\n if (typeof eventName === 'symbol') {\n _eventName = [eventName];\n }\n else {\n _eventName = eventName.split(Events.eventSplitter);\n }\n this.callbacks || (this.callbacks = {});\n const calls = this.callbacks;\n while ((event = _eventName.shift())) {\n const list = calls[event];\n const node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = {\n tail,\n next: list ? list.next : node\n };\n }\n return this;\n }\n once(events, callback, context) {\n const wrapper = (...args) => {\n callback.apply(this, args);\n this.off(events, wrapper, context);\n };\n this.on(events, wrapper, context);\n return this;\n }\n off(events, callback, context) {\n let event, calls, _events;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (!(events || callback || context)) {\n delete this.callbacks;\n return this;\n }\n if (typeof events === 'symbol') {\n _events = [events];\n }\n else {\n _events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n }\n while ((event = _events.shift())) {\n let node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n const tail = node.tail;\n while ((node = node.next) !== tail) {\n const cb = node.callback;\n const ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n }\n }\n return this;\n }\n trigger(events, ...args) {\n let event, node, calls, _events;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (typeof events === 'symbol') {\n _events = [events];\n }\n else {\n _events = events.split(Events.eventSplitter);\n }\n while ((event = _events.shift())) {\n if ((node = calls[event])) {\n const tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n }\n return this;\n }\n}\nEvents.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\\s+/\n\nclass PageEvts extends Events {\n constructor() {\n super(...arguments);\n this.exeList = [];\n }\n on(eventName, callback) {\n super.on(eventName, callback, this);\n this.exeList = this.exeList.reduce((prev, item) => {\n if (item.eventName === eventName) {\n super.trigger(item.eventName, item.data);\n }\n else {\n prev.push(item);\n }\n return prev;\n }, []);\n return this;\n }\n emit(events, data) {\n // eslint-disable-next-line\n routeChannel.trigger(events, data);\n }\n}\nconst pageChannel = new PageEvts();\nclass RouteEvts extends Events {\n emit(events, data) {\n pageChannel.off(events);\n pageChannel.exeList.push({\n eventName: events,\n data\n });\n }\n addEvents(events) {\n if (!events || typeof events !== 'object')\n return;\n Object.keys(events).forEach(key => {\n this.off(key);\n this.on(key, events[key], this);\n });\n }\n}\nconst routeChannel = new RouteEvts();\nconst EventChannel = { pageChannel, routeChannel };\n\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return typeof o === 'undefined';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object';\n}\nfunction isBoolean(o) {\n return o === true || o === false;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isBooleanStringLiteral(o) {\n return o === 'true' || o === 'false';\n}\nconst isArray = Array.isArray;\nconst isWebPlatform = () => process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web';\n\nexports.HOOK_TYPE = void 0;\n(function (HOOK_TYPE) {\n HOOK_TYPE[HOOK_TYPE[\"SINGLE\"] = 0] = \"SINGLE\";\n HOOK_TYPE[HOOK_TYPE[\"MULTI\"] = 1] = \"MULTI\";\n HOOK_TYPE[HOOK_TYPE[\"WATERFALL\"] = 2] = \"WATERFALL\";\n})(exports.HOOK_TYPE || (exports.HOOK_TYPE = {}));\nconst defaultMiniLifecycle = {\n app: [\n 'onLaunch',\n 'onShow',\n 'onHide'\n ],\n page: [\n 'onLoad',\n 'onUnload',\n 'onReady',\n 'onShow',\n 'onHide',\n [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onResize',\n 'defer:onTabItemTap',\n 'onTitleClick',\n 'onOptionMenuClick',\n 'onPopMenuClick',\n 'onPullIntercept',\n 'onAddToFavorites'\n ],\n [\n 'onShareAppMessage',\n 'onShareTimeline'\n ]\n ],\n component: [\n 'attached',\n 'detached'\n ]\n};\nfunction TaroHook(type, initial) {\n return {\n type,\n initial: initial || null\n };\n}\nclass TaroHooks extends Events {\n constructor(hooks, opts) {\n super(opts);\n this.hooks = hooks;\n for (const hookName in hooks) {\n const { initial } = hooks[hookName];\n if (isFunction(initial)) {\n this.on(hookName, initial);\n }\n }\n }\n tapOneOrMany(hookName, callback) {\n const list = isFunction(callback) ? [callback] : callback;\n list.forEach(cb => this.on(hookName, cb));\n }\n tap(hookName, callback) {\n const hooks = this.hooks;\n const { type, initial } = hooks[hookName];\n if (type === exports.HOOK_TYPE.SINGLE) {\n this.off(hookName);\n this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);\n }\n else {\n initial && this.off(hookName, initial);\n this.tapOneOrMany(hookName, callback);\n }\n }\n call(hookName, ...rest) {\n var _a;\n const hook = this.hooks[hookName];\n if (!hook)\n return;\n const { type } = hook;\n const calls = this.callbacks;\n if (!calls)\n return;\n const list = calls[hookName];\n if (list) {\n const tail = list.tail;\n let node = list.next;\n let args = rest;\n let res;\n while (node !== tail) {\n res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);\n if (type === exports.HOOK_TYPE.WATERFALL) {\n const params = [res];\n args = params;\n }\n node = node.next;\n }\n return res;\n }\n }\n isExist(hookName) {\n var _a;\n return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);\n }\n}\nconst hooks = new TaroHooks({\n getMiniLifecycle: TaroHook(exports.HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n getMiniLifecycleImpl: TaroHook(exports.HOOK_TYPE.SINGLE, function () {\n return this.call('getMiniLifecycle', defaultMiniLifecycle);\n }),\n getLifecycle: TaroHook(exports.HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n modifyRecursiveComponentConfig: TaroHook(exports.HOOK_TYPE.SINGLE, (defaultConfig) => defaultConfig),\n getPathIndex: TaroHook(exports.HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n getEventCenter: TaroHook(exports.HOOK_TYPE.SINGLE, Events => new Events()),\n isBubbleEvents: TaroHook(exports.HOOK_TYPE.SINGLE, eventName => {\n /**\n * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致\n * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n */\n const BUBBLE_EVENTS = new Set([\n 'touchstart',\n 'touchmove',\n 'touchcancel',\n 'touchend',\n 'touchforcechange',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend'\n ]);\n return BUBBLE_EVENTS.has(eventName);\n }),\n getSpecialNodes: TaroHook(exports.HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n onRemoveAttribute: TaroHook(exports.HOOK_TYPE.SINGLE),\n batchedEventUpdates: TaroHook(exports.HOOK_TYPE.SINGLE),\n mergePageInstance: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyPageObject: TaroHook(exports.HOOK_TYPE.SINGLE),\n createPullDownComponent: TaroHook(exports.HOOK_TYPE.SINGLE),\n getDOMNode: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyHydrateData: TaroHook(exports.HOOK_TYPE.SINGLE),\n transferHydrateData: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifySetAttrPayload: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyRmAttrPayload: TaroHook(exports.HOOK_TYPE.SINGLE),\n onAddEvent: TaroHook(exports.HOOK_TYPE.SINGLE),\n proxyToRaw: TaroHook(exports.HOOK_TYPE.SINGLE, function (proxyObj) {\n return proxyObj;\n }),\n modifyMpEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyMpEventImpl: TaroHook(exports.HOOK_TYPE.SINGLE, function (e) {\n try {\n // 有些小程序的事件对象的某些属性只读\n this.call('modifyMpEvent', e);\n }\n catch (error) {\n console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));\n }\n }),\n injectNewStyleProperties: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyTaroEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n dispatchTaroEvent: TaroHook(exports.HOOK_TYPE.SINGLE, (e, node) => {\n node.dispatchEvent(e);\n }),\n dispatchTaroEventFinish: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyTaroEventReturn: TaroHook(exports.HOOK_TYPE.SINGLE, () => undefined),\n modifyDispatchEvent: TaroHook(exports.HOOK_TYPE.MULTI),\n initNativeApi: TaroHook(exports.HOOK_TYPE.MULTI),\n patchElement: TaroHook(exports.HOOK_TYPE.MULTI),\n modifyAddEventListener: TaroHook(exports.HOOK_TYPE.SINGLE),\n modifyRemoveEventListener: TaroHook(exports.HOOK_TYPE.SINGLE),\n});\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst noop = (..._) => { };\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param v Value.\n * @returns Boxed value.\n */\nconst box = (v) => ({ v });\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param b Boxed value.\n * @returns Value.\n */\nconst unbox = (b) => b.v;\nfunction toDashed(s) {\n return s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction toCamelCase(s) {\n let camel = '';\n let nextCap = false;\n for (let i = 0; i < s.length; i++) {\n if (s[i] !== '-') {\n camel += nextCap ? s[i].toUpperCase() : s[i];\n nextCap = false;\n }\n else {\n nextCap = true;\n }\n }\n return camel;\n}\nconst toKebabCase = function (string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\nfunction capitalize(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n/**\n * ensure takes a condition and throw a error if the condition fails,\n * like failure::ensure: https://docs.rs/failure/0.1.1/failure/macro.ensure.html\n * @param condition condition.\n * @param msg error message.\n */\nfunction ensure(condition, msg) {\n if (!condition) {\n if (process.env.NODE_ENV !== 'production') {\n const reportIssue = '\\n如有疑问,请提交 issue 至:https://github.com/nervjs/taro/issues';\n throw new Error(msg + reportIssue);\n }\n else {\n throw new Error(msg);\n }\n }\n}\nfunction warn(condition, msg) {\n if (process.env.NODE_ENV !== 'production') {\n if (condition) {\n console.warn(`[taro warn] ${msg}`);\n }\n }\n}\nfunction queryToJson(str) {\n const dec = decodeURIComponent;\n const qp = str.split('&');\n const ret = {};\n let name;\n let val;\n for (let i = 0, l = qp.length, item; i < l; ++i) {\n item = qp[i];\n if (item.length) {\n const s = item.indexOf('=');\n if (s < 0) {\n name = dec(item);\n val = '';\n }\n else {\n name = dec(item.slice(0, s));\n val = dec(item.slice(s + 1));\n }\n if (typeof ret[name] === 'string') { // inline'd type check\n ret[name] = [ret[name]];\n }\n if (Array.isArray(ret[name])) {\n ret[name].push(val);\n }\n else {\n ret[name] = val;\n }\n }\n }\n return ret; // Object\n}\nlet _uniqueId = 1;\nconst _loadTime = (new Date()).getTime().toString();\nfunction getUniqueKey() {\n return _loadTime + (_uniqueId++);\n}\nconst cacheData = {};\nfunction cacheDataSet(key, val) {\n cacheData[key] = val;\n}\nfunction cacheDataGet(key, delelteAfterGet) {\n const temp = cacheData[key];\n delelteAfterGet && delete cacheData[key];\n return temp;\n}\nfunction cacheDataHas(key) {\n return key in cacheData;\n}\nfunction mergeInternalComponents(components) {\n Object.keys(components).forEach(name => {\n if (name in internalComponents) {\n Object.assign(internalComponents[name], components[name]);\n }\n else {\n internalComponents[name] = components[name];\n }\n });\n return internalComponents;\n}\nfunction getComponentsAlias(origin) {\n const mapping = {};\n const viewAttrs = origin.View;\n const extraList = {\n '#text': {},\n StaticView: viewAttrs,\n StaticImage: origin.Image,\n StaticText: origin.Text,\n PureView: viewAttrs,\n CatchView: viewAttrs\n };\n origin = Object.assign(Object.assign({}, origin), extraList);\n Object.keys(origin)\n .sort((a, b) => {\n const reg = /^(Static|Pure|Catch)*(View|Image|Text)$/;\n const isACommonly = reg.test(a);\n const isBCommonly = reg.test(b);\n if (isACommonly && isBCommonly) {\n return a > b ? 1 : -1;\n }\n else if (isACommonly) {\n return -1;\n }\n else if (isBCommonly) {\n return 1;\n }\n else {\n return a >= b ? 1 : -1;\n }\n })\n .forEach((key, num) => {\n const obj = {\n _num: String(num)\n };\n Object.keys(origin[key])\n .filter(attr => !(/^bind/.test(attr)) && !['focus', 'blur'].includes(attr))\n .sort()\n .forEach((attr, index) => {\n obj[toCamelCase(attr)] = 'p' + index;\n });\n mapping[toDashed(key)] = obj;\n });\n return mapping;\n}\nfunction getPlatformType(platform = 'weapp', configNameOrType = exports.PLATFORM_TYPE.MINI) {\n if (Object.keys(PLATFORM_CONFIG_MAP).includes(platform)) {\n configNameOrType = platform;\n }\n const param = PLATFORM_CONFIG_MAP[configNameOrType] || {};\n return param.type || configNameOrType;\n}\nfunction mergeReconciler(hostConfig, hooksForTest) {\n const obj = hooksForTest || hooks;\n const keys = Object.keys(hostConfig);\n keys.forEach(key => {\n obj.tap(key, hostConfig[key]);\n });\n}\nfunction nonsupport(api) {\n return function () {\n console.warn(`小程序暂不支持 ${api}`);\n };\n}\nfunction setUniqueKeyToRoute(key, obj) {\n const routerParamsPrivateKey = '__key_';\n const useDataCacheApis = [\n 'navigateTo',\n 'redirectTo',\n 'reLaunch',\n 'switchTab'\n ];\n if (useDataCacheApis.indexOf(key) > -1) {\n const url = obj.url = obj.url || '';\n const hasMark = url.indexOf('?') > -1;\n const cacheKey = getUniqueKey();\n obj.url += (hasMark ? '&' : '?') + `${routerParamsPrivateKey}=${cacheKey}`;\n }\n}\nfunction indent(str, size) {\n return str.split('\\n')\n .map((line, index) => {\n const indent = index === 0 ? '' : Array(size).fill(' ').join('');\n return indent + line;\n })\n .join('\\n');\n}\n\nconst needPromiseApis = new Set([\n 'addPhoneContact',\n 'authorize',\n 'canvasGetImageData',\n 'canvasPutImageData',\n 'canvasToTempFilePath',\n 'checkSession',\n 'chooseAddress',\n 'chooseImage',\n 'chooseInvoiceTitle',\n 'chooseLocation',\n 'chooseVideo',\n 'clearStorage',\n 'closeBLEConnection',\n 'closeBluetoothAdapter',\n 'closeSocket',\n 'compressImage',\n 'connectSocket',\n 'createBLEConnection',\n 'downloadFile',\n 'exitMiniProgram',\n 'getAvailableAudioSources',\n 'getBLEDeviceCharacteristics',\n 'getBLEDeviceServices',\n 'getBatteryInfo',\n 'getBeacons',\n 'getBluetoothAdapterState',\n 'getBluetoothDevices',\n 'getClipboardData',\n 'getConnectedBluetoothDevices',\n 'getConnectedWifi',\n 'getExtConfig',\n 'getFileInfo',\n 'getImageInfo',\n 'getLocation',\n 'getNetworkType',\n 'getSavedFileInfo',\n 'getSavedFileList',\n 'getScreenBrightness',\n 'getSetting',\n 'getStorage',\n 'getStorageInfo',\n 'getSystemInfo',\n 'getUserInfo',\n 'getWifiList',\n 'hideHomeButton',\n 'hideShareMenu',\n 'hideTabBar',\n 'hideTabBarRedDot',\n 'loadFontFace',\n 'login',\n 'makePhoneCall',\n 'navigateBack',\n 'navigateBackMiniProgram',\n 'navigateTo',\n 'navigateToBookshelf',\n 'navigateToMiniProgram',\n 'notifyBLECharacteristicValueChange',\n 'hideKeyboard',\n 'hideLoading',\n 'hideNavigationBarLoading',\n 'hideToast',\n 'openBluetoothAdapter',\n 'openDocument',\n 'openLocation',\n 'openSetting',\n 'pageScrollTo',\n 'previewImage',\n 'queryBookshelf',\n 'reLaunch',\n 'readBLECharacteristicValue',\n 'redirectTo',\n 'removeSavedFile',\n 'removeStorage',\n 'removeTabBarBadge',\n 'requestSubscribeMessage',\n 'saveFile',\n 'saveImageToPhotosAlbum',\n 'saveVideoToPhotosAlbum',\n 'scanCode',\n 'sendSocketMessage',\n 'setBackgroundColor',\n 'setBackgroundTextStyle',\n 'setClipboardData',\n 'setEnableDebug',\n 'setInnerAudioOption',\n 'setKeepScreenOn',\n 'setNavigationBarColor',\n 'setNavigationBarTitle',\n 'setScreenBrightness',\n 'setStorage',\n 'setTabBarBadge',\n 'setTabBarItem',\n 'setTabBarStyle',\n 'showActionSheet',\n 'showFavoriteGuide',\n 'showLoading',\n 'showModal',\n 'showShareMenu',\n 'showTabBar',\n 'showTabBarRedDot',\n 'showToast',\n 'startBeaconDiscovery',\n 'startBluetoothDevicesDiscovery',\n 'startDeviceMotionListening',\n 'startPullDownRefresh',\n 'stopBeaconDiscovery',\n 'stopBluetoothDevicesDiscovery',\n 'stopCompass',\n 'startCompass',\n 'startAccelerometer',\n 'stopAccelerometer',\n 'showNavigationBarLoading',\n 'stopDeviceMotionListening',\n 'stopPullDownRefresh',\n 'switchTab',\n 'uploadFile',\n 'vibrateLong',\n 'vibrateShort',\n 'writeBLECharacteristicValue'\n]);\nfunction getCanIUseWebp(taro) {\n return function () {\n var _a;\n const res = (_a = taro.getSystemInfoSync) === null || _a === void 0 ? void 0 : _a.call(taro);\n if (!res) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('不支持 API canIUseWebp');\n }\n return false;\n }\n const { platform } = res;\n const platformLower = platform.toLowerCase();\n if (platformLower === 'android' || platformLower === 'devtools') {\n return true;\n }\n return false;\n };\n}\nfunction getNormalRequest(global) {\n return function request(options) {\n options = options\n ? (isString(options)\n ? { url: options }\n : options)\n : {};\n const originSuccess = options.success;\n const originFail = options.fail;\n const originComplete = options.complete;\n let requestTask;\n const p = new Promise((resolve, reject) => {\n options.success = res => {\n originSuccess && originSuccess(res);\n resolve(res);\n };\n options.fail = res => {\n originFail && originFail(res);\n reject(res);\n };\n options.complete = res => {\n originComplete && originComplete(res);\n };\n requestTask = global.request(options);\n });\n equipTaskMethodsIntoPromise(requestTask, p);\n p.abort = (cb) => {\n cb && cb();\n if (requestTask) {\n requestTask.abort();\n }\n return p;\n };\n return p;\n };\n}\nfunction processApis(taro, global, config = {}) {\n const patchNeedPromiseApis = config.needPromiseApis || [];\n const _needPromiseApis = new Set([...patchNeedPromiseApis, ...needPromiseApis]);\n const preserved = [\n 'getEnv',\n 'interceptors',\n 'Current',\n 'getCurrentInstance',\n 'options',\n 'nextTick',\n 'eventCenter',\n 'Events',\n 'preload',\n 'webpackJsonp'\n ];\n const apis = new Set(!config.isOnlyPromisify\n ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n : patchNeedPromiseApis);\n if (config.modifyApis) {\n config.modifyApis(apis);\n }\n apis.forEach(key => {\n if (_needPromiseApis.has(key)) {\n const originKey = key;\n taro[originKey] = (options = {}, ...args) => {\n let key = originKey;\n // 第一个参数 options 为字符串,单独处理\n if (typeof options === 'string') {\n if (args.length) {\n return global[key](options, ...args);\n }\n return global[key](options);\n }\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n const transformResult = config.transformMeta(key, options);\n key = transformResult.key;\n options = transformResult.options;\n // 新 key 可能不存在\n if (!global.hasOwnProperty(key)) {\n return nonsupport(key)();\n }\n }\n let task = null;\n const obj = Object.assign({}, options);\n // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n setUniqueKeyToRoute(key, options);\n // Promise 化\n const p = new Promise((resolve, reject) => {\n obj.success = res => {\n var _a, _b;\n (_a = config.modifyAsyncResult) === null || _a === void 0 ? void 0 : _a.call(config, key, res);\n (_b = options.success) === null || _b === void 0 ? void 0 : _b.call(options, res);\n if (key === 'connectSocket') {\n resolve(Promise.resolve().then(() => task ? Object.assign(task, res) : res));\n }\n else {\n resolve(res);\n }\n };\n obj.fail = res => {\n var _a;\n (_a = options.fail) === null || _a === void 0 ? void 0 : _a.call(options, res);\n reject(res);\n };\n obj.complete = res => {\n var _a;\n (_a = options.complete) === null || _a === void 0 ? void 0 : _a.call(options, res);\n };\n if (args.length) {\n task = global[key](obj, ...args);\n }\n else {\n task = global[key](obj);\n }\n });\n // 给 promise 对象挂载属性\n if (['uploadFile', 'downloadFile'].includes(key)) {\n equipTaskMethodsIntoPromise(task, p);\n p.progress = cb => {\n task === null || task === void 0 ? void 0 : task.onProgressUpdate(cb);\n return p;\n };\n p.abort = cb => {\n cb === null || cb === void 0 ? void 0 : cb();\n task === null || task === void 0 ? void 0 : task.abort();\n return p;\n };\n }\n return p;\n };\n }\n else {\n let platformKey = key;\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n platformKey = config.transformMeta(key, {}).key;\n }\n // API 不存在\n if (!global.hasOwnProperty(platformKey)) {\n taro[key] = nonsupport(key);\n return;\n }\n if (isFunction(global[key])) {\n taro[key] = (...args) => {\n if (config.handleSyncApis) {\n return config.handleSyncApis(key, global, args);\n }\n else {\n return global[platformKey].apply(global, args);\n }\n };\n }\n else {\n taro[key] = global[platformKey];\n }\n }\n });\n !config.isOnlyPromisify && equipCommonApis(taro, global, config);\n}\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象,如微信的 wx,支付宝的 my\n */\nfunction equipCommonApis(taro, global, apis = {}) {\n taro.canIUseWebp = getCanIUseWebp(taro);\n taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages');\n taro.getApp = getApp || nonsupport('getApp');\n taro.env = global.env || {};\n try {\n taro.requirePlugin = requirePlugin || nonsupport('requirePlugin');\n }\n catch (error) {\n taro.requirePlugin = nonsupport('requirePlugin');\n }\n // request & interceptors\n const request = apis.request || getNormalRequest(global);\n function taroInterceptor(chain) {\n return request(chain.requestParams);\n }\n const link = new taro.Link(taroInterceptor);\n taro.request = link.request.bind(link);\n taro.addInterceptor = link.addInterceptor.bind(link);\n taro.cleanInterceptors = link.cleanInterceptors.bind(link);\n taro.miniGlobal = taro.options.miniGlobal = global;\n taro.getAppInfo = function () {\n return {\n platform: process.env.TARO_PLATFORM || 'MiniProgram',\n taroVersion: process.env.TARO_VERSION || 'unknown',\n designWidth: taro.config.designWidth\n };\n };\n taro.createSelectorQuery = delayRef(taro, global, 'createSelectorQuery', 'exec');\n taro.createIntersectionObserver = delayRef(taro, global, 'createIntersectionObserver', 'observe');\n}\n/**\n * 将Task对象中的方法挂载到promise对象中,适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise(task, promise) {\n if (!task || !promise)\n return;\n const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived'];\n task && taskMethods.forEach(method => {\n if (method in task) {\n promise[method] = task[method].bind(task);\n }\n });\n}\nfunction delayRef(taro, global, name, method) {\n return function (...args) {\n const res = global[name](...args);\n const raw = res[method].bind(res);\n res[method] = function (...methodArgs) {\n taro.nextTick(() => raw(...methodArgs));\n };\n return res;\n };\n}\n\n// 字符串简写\nexports.Shortcuts = void 0;\n(function (Shortcuts) {\n Shortcuts[\"Container\"] = \"container\";\n Shortcuts[\"Childnodes\"] = \"cn\";\n Shortcuts[\"Text\"] = \"v\";\n Shortcuts[\"NodeType\"] = \"nt\";\n Shortcuts[\"NodeName\"] = \"nn\";\n // Attrtibutes\n Shortcuts[\"Style\"] = \"st\";\n Shortcuts[\"Class\"] = \"cl\";\n Shortcuts[\"Src\"] = \"src\";\n})(exports.Shortcuts || (exports.Shortcuts = {}));\n\nexports.EMPTY_ARR = EMPTY_ARR;\nexports.EMPTY_OBJ = EMPTY_OBJ;\nexports.EventChannel = EventChannel;\nexports.Events = Events;\nexports.PLATFORM_CONFIG_MAP = PLATFORM_CONFIG_MAP;\nexports.TaroHook = TaroHook;\nexports.TaroHooks = TaroHooks;\nexports.animation = animation;\nexports.box = box;\nexports.cacheDataGet = cacheDataGet;\nexports.cacheDataHas = cacheDataHas;\nexports.cacheDataSet = cacheDataSet;\nexports.capitalize = capitalize;\nexports.controlledComponent = controlledComponent;\nexports.ensure = ensure;\nexports.focusComponents = focusComponents;\nexports.getComponentsAlias = getComponentsAlias;\nexports.getPlatformType = getPlatformType;\nexports.getUniqueKey = getUniqueKey;\nexports.hasOwn = hasOwn;\nexports.hooks = hooks;\nexports.indent = indent;\nexports.internalComponents = internalComponents;\nexports.isArray = isArray;\nexports.isBoolean = isBoolean;\nexports.isBooleanStringLiteral = isBooleanStringLiteral;\nexports.isFunction = isFunction;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isString = isString;\nexports.isUndefined = isUndefined;\nexports.isWebPlatform = isWebPlatform;\nexports.mergeInternalComponents = mergeInternalComponents;\nexports.mergeReconciler = mergeReconciler;\nexports.nestElements = nestElements;\nexports.nonsupport = nonsupport;\nexports.noop = noop;\nexports.processApis = processApis;\nexports.queryToJson = queryToJson;\nexports.setUniqueKeyToRoute = setUniqueKeyToRoute;\nexports.singleQuote = singleQuote;\nexports.toCamelCase = toCamelCase;\nexports.toDashed = toDashed;\nexports.toKebabCase = toKebabCase;\nexports.touchEvents = touchEvents;\nexports.unbox = unbox;\nexports.voidElements = voidElements;\nexports.warn = warn;\n//# sourceMappingURL=index.cjs.js.map\n","const { hooks } = require('@tarojs/runtime')\nconst taro = require('@tarojs/api').default\n\nif (hooks.isExist('initNativeApi')) {\n hooks.call('initNativeApi', taro)\n}\n\nmodule.exports = taro\nmodule.exports.default = module.exports\n","/**\n * Promise-based replacement for setTimeout / clearTimeout.\n */\n\nconst {promiseFinally, toError} = require('./utils');\n\nmodule.exports = class Timeout {\n static set(delay, rejectReason) {\n return new Timeout().set(delay, rejectReason);\n }\n\n static wrap(promise, delay, rejectReason) {\n return new Timeout().wrap(promise, delay, rejectReason);\n }\n\n constructor() {\n this._id = null;\n this._delay = null;\n }\n\n get id() {\n return this._id;\n }\n\n get delay() {\n return this._delay;\n }\n\n set(delay, rejectReason = '') {\n return new Promise((resolve, reject) => {\n this.clear();\n const fn = rejectReason ? () => reject(toError(rejectReason)) : resolve;\n this._id = setTimeout(fn, delay);\n this._delay = delay;\n });\n }\n\n wrap(promise, delay, rejectReason = '') {\n const wrappedPromise = promiseFinally(promise, () => this.clear());\n const timer = this.set(delay, rejectReason);\n return Promise.race([\n wrappedPromise,\n timer\n ]);\n }\n\n clear() {\n if (this._id) {\n clearTimeout(this._id);\n }\n }\n};\n","exports.promiseFinally = (promise, fn) => {\n const success = result => {\n fn();\n return result;\n };\n const error = e => {\n fn();\n return Promise.reject(e);\n };\n return Promise.resolve(promise).then(success, error);\n};\n\n/**\n * Converts any value to Error.\n * @param {*} value\n * @returns {Error}\n */\nexports.toError = value => {\n value = typeof value === 'function' ? value() : value;\n return typeof value === 'string' ? new Error(value) : value;\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(926);\n"],"mappings":"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AvQ,SAAAiS,IACAsS,EAAA8B,IAAApU,EAAAysC,EAAAzsC,GAAA,GAEA,CACA,SAAA2sC,WAAAC,GACA,kBACA9sD,QAAAgpB,KAAA,WAAA8jC,IACA,CACA,CACA,SAAAC,oBAAA7sC,EAAAsS,GACA,MAAAw6B,EAAA,SACA,MAAAC,EAAA,CACA,aACA,aACA,WACA,aAEA,GAAAA,EAAAtsD,QAAAuf,IAAA,GACA,MAAAN,EAAA4S,EAAA5S,IAAA4S,EAAA5S,KAAA,GACA,MAAAstC,EAAAttC,EAAAjf,QAAA,QACA,MAAAwsD,EAAA/B,eACA54B,EAAA5S,MAAAstC,EAAA,YAAAF,KAAAG,GACA,CACA,CACA,SAAAC,OAAAl0C,EAAAW,GACA,OAAAX,EAAApI,MAAA,MACAtL,KAAA,CAAAwyB,EAAAnd,KACA,MAAAuyC,EAAAvyC,IAAA,KAAAnO,MAAAmN,GAAAZ,KAAA,KAAA/G,KAAA,IACA,OAAAk7C,EAAAp1B,CAAA,IAEA9lB,KAAA,KACA,CAEA,MAAAm7C,GAAA,IAAA35B,IAAA,CACA,kBACA,YACA,qBACA,qBACA,uBACA,eACA,gBACA,cACA,qBACA,iBACA,cACA,eACA,qBACA,wBACA,cACA,gBACA,gBACA,sBACA,eACA,kBACA,2BACA,8BACA,uBACA,iBACA,aACA,2BACA,sBACA,mBACA,+BACA,mBACA,eACA,cACA,eACA,cACA,iBACA,mBACA,mBACA,sBACA,aACA,aACA,iBACA,gBACA,cACA,cACA,iBACA,gBACA,aACA,mBACA,eACA,QACA,gBACA,eACA,0BACA,aACA,sBACA,wBACA,qCACA,eACA,cACA,2BACA,YACA,uBACA,eACA,eACA,cACA,eACA,eACA,iBACA,WACA,6BACA,aACA,kBACA,gBACA,oBACA,0BACA,WACA,yBACA,yBACA,WACA,oBACA,qBACA,yBACA,mBACA,iBACA,sBACA,kBACA,wBACA,wBACA,sBACA,aACA,iBACA,gBACA,iBACA,kBACA,oBACA,cACA,YACA,gBACA,aACA,mBACA,YACA,uBACA,iCACA,6BACA,uBACA,sBACA,gCACA,cACA,eACA,qBACA,oBACA,2BACA,4BACA,sBACA,YACA,aACA,cACA,eACA,gCAEA,SAAA45B,eAAA1sC,GACA,kBACA,IAAA+J,EACA,MAAAtM,GAAAsM,EAAA/J,EAAA2sC,qBAAA,MAAA5iC,SAAA,SAAAA,EAAAxnB,KAAAyd,GACA,IAAAvC,EAAA,CACA,GAAAZ,QAAAC,IAAAqL,WAAA,cACA/oB,QAAAI,MAAA,sBACA,CACA,YACA,CACA,MAAAuvC,YAAAtxB,EACA,MAAAmvC,EAAA7d,EAAAppC,cACA,GAAAinD,IAAA,WAAAA,IAAA,YACA,WACA,CACA,YACA,CACA,CACA,SAAAC,iBAAA3c,GACA,gBAAAhyB,QAAAngB,GACAA,IACAo0B,SAAAp0B,GACA,CAAAihB,IAAAjhB,GACAA,EACA,GACA,MAAA+uD,EAAA/uD,EAAAmB,QACA,MAAA6tD,EAAAhvD,EAAAuB,KACA,MAAA0tD,EAAAjvD,EAAAkvD,SACA,IAAAC,EACA,MAAA9qD,EAAA,IAAA1C,SAAA,CAAAC,EAAAC,KACA7B,EAAAmB,QAAAue,IACAqvC,KAAArvC,GACA9d,EAAA8d,EAAA,EAEA1f,EAAAuB,KAAAme,IACAsvC,KAAAtvC,GACA7d,EAAA6d,EAAA,EAEA1f,EAAAkvD,SAAAxvC,IACAuvC,KAAAvvC,EAAA,EAEAyvC,EAAAhd,EAAAhyB,QAAAngB,EAAA,IAEAovD,4BAAAD,EAAA9qD,GACAA,EAAAyc,MAAA5Q,IACAA,OACA,GAAAi/C,EAAA,CACAA,EAAAruC,OACA,CACA,OAAAzc,CAAA,EAEA,OAAAA,CACA,CACA,CACA,SAAAgrD,YAAAptC,EAAAkwB,EAAAjwB,EAAA,IACA,MAAAotC,EAAAptC,EAAAwsC,iBAAA,GACA,MAAAa,EAAA,IAAAx6B,IAAA,IAAAu6B,KAAAZ,KACA,MAAAc,EAAA,CACA,SACA,eACA,UACA,qBACA,UACA,WACA,cACA,SACA,UACA,gBAEA,MAAAC,EAAA,IAAA16B,KAAA7S,EAAAwtC,gBACAzwD,OAAA4gB,KAAAsyB,GAAAzrC,QAAAynD,GAAAqB,EAAAxtD,QAAAmsD,MAAA,IACAmB,GACA,GAAAptC,EAAAytC,WAAA,CACAztC,EAAAytC,WAAAF,EACA,CACAA,EAAAngD,SAAAiS,IACA,GAAAguC,EAAA95B,IAAAlU,GAAA,CACA,MAAAquC,EAAAruC,EACAU,EAAA2tC,GAAA,CAAA5vD,EAAA,MAAAyR,KACA,IAAA8P,EAAAquC,EAEA,UAAA5vD,IAAA,UACA,GAAAyR,EAAAhP,OAAA,CACA,OAAA0vC,EAAA5wB,GAAAvhB,KAAAyR,EACA,CACA,OAAA0gC,EAAA5wB,GAAAvhB,EACA,CAEA,GAAAkiB,EAAA2tC,cAAA,CACA,MAAAC,EAAA5tC,EAAA2tC,cAAAtuC,EAAAvhB,GACAuhB,EAAAuuC,EAAAvuC,IACAvhB,EAAA8vD,EAAA9vD,QAEA,IAAAmyC,EAAA5tC,eAAAgd,GAAA,CACA,OAAA2sC,WAAA3sC,EAAA2sC,EACA,CACA,CACA,IAAA6B,EAAA,KACA,MAAAl8B,EAAA50B,OAAAmhB,OAAA,GAAApgB,GAEAouD,oBAAA7sC,EAAAvhB,GAEA,MAAAqE,EAAA,IAAA1C,SAAA,CAAAC,EAAAC,KACAgyB,EAAA1yB,QAAAue,IACA,IAAAsM,EAAAuX,GACAvX,EAAA9J,EAAA8tC,qBAAA,MAAAhkC,SAAA,SAAAA,EAAAxnB,KAAA0d,EAAAX,EAAA7B,IACA6jB,EAAAvjC,EAAAmB,WAAA,MAAAoiC,SAAA,SAAAA,EAAA/+B,KAAAxE,EAAA0f,GACA,GAAA6B,IAAA,iBACA3f,EAAAD,QAAAC,UAAAgf,MAAA,IAAAmvC,EAAA9wD,OAAAmhB,OAAA2vC,EAAArwC,OACA,KACA,CACA9d,EAAA8d,EACA,GAEAmU,EAAAtyB,KAAAme,IACA,IAAAsM,GACAA,EAAAhsB,EAAAuB,QAAA,MAAAyqB,SAAA,SAAAA,EAAAxnB,KAAAxE,EAAA0f,GACA7d,EAAA6d,EAAA,EAEAmU,EAAAq7B,SAAAxvC,IACA,IAAAsM,GACAA,EAAAhsB,EAAAkvD,YAAA,MAAAljC,SAAA,SAAAA,EAAAxnB,KAAAxE,EAAA0f,EAAA,EAEA,GAAAjO,EAAAhP,OAAA,CACAstD,EAAA5d,EAAA5wB,GAAAsS,KAAApiB,EACA,KACA,CACAs+C,EAAA5d,EAAA5wB,GAAAsS,EACA,KAGA,iCAAAqI,SAAA3a,GAAA,CACA6tC,4BAAAW,EAAA1rD,GACAA,EAAA4rD,SAAA//C,IACA6/C,IAAA,MAAAA,SAAA,SAAAA,EAAAG,iBAAAhgD,GACA,OAAA7L,CAAA,EAEAA,EAAAyc,MAAA5Q,IACAA,IAAA,MAAAA,SAAA,SAAAA,IACA6/C,IAAA,MAAAA,SAAA,SAAAA,EAAAjvC,QACA,OAAAzc,CAAA,CAEA,CACA,OAAAA,CAAA,CAEA,KACA,CACA,IAAA8rD,EAAA5uC,EAEA,GAAAW,EAAA2tC,cAAA,CACAM,EAAAjuC,EAAA2tC,cAAAtuC,EAAA,IAAAA,GACA,CAEA,IAAA4wB,EAAA5tC,eAAA4rD,GAAA,CACAluC,EAAAV,GAAA2sC,WAAA3sC,GACA,MACA,CACA,GAAAzB,WAAAqyB,EAAA5wB,IAAA,CACAU,EAAAV,GAAA,IAAA9P,KACA,GAAAyQ,EAAAkuC,eAAA,CACA,OAAAluC,EAAAkuC,eAAA7uC,EAAA4wB,EAAA1gC,EACA,KACA,CACA,OAAA0gC,EAAAge,GAAAn4C,MAAAm6B,EAAA1gC,EACA,EAEA,KACA,CACAwQ,EAAAV,GAAA4wB,EAAAge,EACA,CACA,MAEAjuC,EAAAwtC,iBAAAW,gBAAApuC,EAAAkwB,EAAAjwB,EACA,CAMA,SAAAmuC,gBAAApuC,EAAAkwB,EAAAsd,EAAA,IACAxtC,EAAAquC,YAAA3B,eAAA1sC,GACAA,EAAAsuC,iCAAArC,WAAA,mBACAjsC,EAAAuuC,eAAAtC,WAAA,UACAjsC,EAAAlD,IAAAozB,EAAApzB,KAAA,GACA,IACAkD,EAAAwuC,6BAAAvC,WAAA,gBACA,CACA,MAAAzsD,GACAwgB,EAAAwuC,cAAAvC,WAAA,gBACA,CAEA,MAAA/tC,EAAAsvC,EAAAtvC,SAAA2uC,iBAAA3c,GACA,SAAAlyB,gBAAAC,GACA,OAAAC,EAAAD,EAAAf,cACA,CACA,MAAAuxC,EAAA,IAAAzuC,EAAAlC,KAAAE,iBACAgC,EAAA9B,QAAAuwC,EAAAvwC,QAAAzJ,KAAAg6C,GACAzuC,EAAA5B,eAAAqwC,EAAArwC,eAAA3J,KAAAg6C,GACAzuC,EAAA3B,kBAAAowC,EAAApwC,kBAAA5J,KAAAg6C,GACAzuC,EAAA+gB,WAAA/gB,EAAAjiB,QAAAgjC,WAAAmP,EACAlwB,EAAA0uC,WAAA,WACA,OACA3f,SAAAlyB,QAAAC,IAAAE,eAAA,cACA2xC,YAAA9xC,QAAAC,IAAA8xC,cAAA,UACA1uC,YAAAF,EAAAC,OAAAC,YAEA,EACAF,EAAAihB,oBAAA4tB,SAAA7uC,EAAAkwB,EAAA,8BACAlwB,EAAA8uC,2BAAAD,SAAA7uC,EAAAkwB,EAAA,uCACA,CAMA,SAAAid,4BAAAW,EAAAiB,GACA,IAAAjB,IAAAiB,EACA,OACA,MAAAC,EAAA,+HACAlB,GAAAkB,EAAA3hD,SAAA0R,IACA,GAAAA,KAAA+uC,EAAA,CACAiB,EAAAhwC,GAAA+uC,EAAA/uC,GAAAtK,KAAAq5C,EACA,IAEA,CACA,SAAAe,SAAA7uC,EAAAkwB,EAAA9vC,EAAA2e,GACA,mBAAAvP,GACA,MAAAiO,EAAAyyB,EAAA9vC,MAAAoP,GACA,MAAA1H,EAAA2V,EAAAsB,GAAAtK,KAAAgJ,GACAA,EAAAsB,GAAA,YAAAkwC,GACAjvC,EAAAgB,UAAA,IAAAlZ,KAAAmnD,IACA,EACA,OAAAxxC,CACA,CACA,CAGAvgB,EAAAgyD,eAAA,GACA,SAAAA,GACAA,EAAA,yBACAA,EAAA,mBACAA,EAAA,YACAA,EAAA,iBACAA,EAAA,iBAEAA,EAAA,cACAA,EAAA,cACAA,EAAA,YACA,EAVA,CAUAhyD,EAAAgyD,YAAAhyD,EAAAgyD,UAAA,KAEAhyD,EAAAwsD,aACAxsD,EAAA+uB,aACA/uB,EAAAy3C,gBACAz3C,EAAAgkB,cACAhkB,EAAAgoD,uBACAhoD,EAAA2pD,kBACA3pD,EAAA6pD,oBACA7pD,EAAA6/C,YACA7/C,EAAAysD,QACAzsD,EAAAytD,0BACAztD,EAAA2tD,0BACA3tD,EAAAwtD,0BACAxtD,EAAA8sD,sBACA9sD,EAAAysC,sBACAzsC,EAAA0xB,cACA1xB,EAAA6nD,kBACA7nD,EAAAstB,sCACAttB,EAAAyuD,gCACAzuD,EAAAstD,0BACAttD,EAAA+sD,cACA/sD,EAAAovB,SACApvB,EAAAsvD,cACAtvD,EAAAutB,qBACAvtB,EAAA0wB,WACA1wB,EAAAspD,oBACAtpD,EAAAupD,8CACAvpD,EAAA2gB,sBACA3gB,EAAAo1B,cACAp1B,EAAA8uC,kBACA9uC,EAAAuiB,kBACAviB,EAAAi1B,kBACAj1B,EAAA0hB,wBACA1hB,EAAAwpD,4BACAxpD,EAAA4tD,gDACA5tD,EAAA4uD,gCACA5uD,EAAA8nD,eACA9nD,EAAA+uD,sBACA/uD,EAAAorB,UACAprB,EAAAkwD,wBACAlwD,EAAAitD,wBACAjtD,EAAAivD,wCACAjvD,EAAAkgD,wBACAlgD,EAAA0vB,wBACA1vB,EAAAg2B,kBACAh2B,EAAA6sD,wBACA7sD,EAAAu/C,cACAv/C,EAAA0sD,YACA1sD,EAAAyjC,eACAzjC,EAAAkrB,S,gBCvzCA,MAAAkE,SAAAhvB,EAAA,KACA,MAAA0iB,EAAA1iB,EAAA,gBAEA,GAAAgvB,EAAA4X,QAAA,kBACA5X,EAAA/pB,KAAA,gBAAAyd,EACA,CAEAsB,EAAApkB,QAAA8iB,EACAsB,EAAApkB,QAAA,WAAAokB,EAAApkB,O,gBCJA,MAAAiyD,iBAAAC,WAAA9xD,EAAA,KAEAgkB,EAAApkB,QAAA,MAAAmyD,QACA,UAAAtuD,CAAAuuD,EAAAC,GACA,WAAAF,SAAAtuD,IAAAuuD,EAAAC,EACA,CAEA,WAAAC,CAAAT,EAAAO,EAAAC,GACA,WAAAF,SAAAG,KAAAT,EAAAO,EAAAC,EACA,CAEA,WAAAzxD,GACAlB,KAAA6yD,IAAA,KACA7yD,KAAA8yD,OAAA,IACA,CAEA,MAAAh7B,GACA,OAAA93B,KAAA6yD,GACA,CAEA,SAAAH,GACA,OAAA1yD,KAAA8yD,MACA,CAEA,GAAA3uD,CAAAuuD,EAAAC,EAAA,IACA,WAAA7vD,SAAA,CAAAC,EAAAC,KACAhD,KAAAuL,QACA,MAAAqgB,EAAA+mC,EAAA,IAAA3vD,EAAAwvD,EAAAG,IAAA5vD,EACA/C,KAAA6yD,IAAAhxC,WAAA+J,EAAA8mC,GACA1yD,KAAA8yD,OAAAJ,CAAA,GAEA,CAEA,IAAAE,CAAAT,EAAAO,EAAAC,EAAA,IACA,MAAAI,EAAAR,EAAAJ,GAAA,IAAAnyD,KAAAuL,UACA,MAAAynD,EAAAhzD,KAAAmE,IAAAuuD,EAAAC,GACA,OAAA7vD,QAAAmwD,KAAA,CACAF,EACAC,GAEA,CAEA,KAAAznD,GACA,GAAAvL,KAAA6yD,IAAA,CACA/wC,aAAA9hB,KAAA6yD,IACA,CACA,E,cClDAvyD,EAAAiyD,eAAA,CAAAJ,EAAAvmC,KACA,MAAAtpB,QAAAC,IACAqpB,IACA,OAAArpB,CAAA,EAEA,MAAAK,MAAAD,IACAipB,IACA,OAAA9oB,QAAAE,OAAAL,EAAA,EAEA,OAAAG,QAAAC,QAAAovD,GAAApwC,KAAAzf,QAAAM,MAAA,EAQAtC,EAAAkyD,QAAAjyD,IACAA,aAAA,WAAAA,MACA,cAAAA,IAAA,aAAAiL,MAAAjL,IAAA,C,SCJA,IAAAokB,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAA/f,EACA,IAAAggB,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAlmB,EACA,IAAAmmB,EACA,IAAAC,EACA,IAAAC,EACA,IAAA1hB,EACA,IAAA2hB,EACA,IAAAC,GACA,SAAA4sC,GACA,IAAAh8B,SAAAoc,SAAA,SAAAA,cAAA6f,OAAA,SAAAA,YAAAnzD,OAAA,SAAAA,KAAA,GACA,UAAAozD,SAAA,YAAAA,OAAAC,IAAA,CACAD,OAAA,8BAAA9yD,GAAA4yD,EAAAI,eAAAp8B,EAAAo8B,eAAAhzD,IAAA,GACA,MACA,gBAAAokB,EAAApkB,UAAA,UACA4yD,EAAAI,eAAAp8B,EAAAo8B,eAAA5uC,EAAApkB,UACA,KACA,CACA4yD,EAAAI,eAAAp8B,GACA,CACA,SAAAo8B,eAAAhzD,EAAAizD,GACA,GAAAjzD,IAAA42B,EAAA,CACA,UAAA92B,OAAAuE,SAAA,YACAvE,OAAAC,eAAAC,EAAA,cAAAC,MAAA,MACA,KACA,CACAD,EAAAJ,WAAA,IACA,CACA,CACA,gBAAA43B,EAAA/iB,GAAA,OAAAzU,EAAAw3B,GAAAy7B,IAAAz7B,EAAA/iB,IAAA,CACA,CACA,EAtBA,EAuBA,SAAAy+C,GACA,IAAAC,EAAArzD,OAAAszD,gBACA,CAAApxC,UAAA,cAAApT,OAAA,SAAAmwC,EAAA/vC,GAAA+vC,EAAA/8B,UAAAhT,CAAA,GACA,SAAA+vC,EAAA/vC,GAAA,QAAA9J,KAAA8J,EAAA,GAAAlP,OAAAqF,UAAAC,eAAAC,KAAA2J,EAAA9J,GAAA65C,EAAA75C,GAAA8J,EAAA9J,EAAA,EAEAmf,EAAA,SAAA06B,EAAA/vC,GACA,UAAAA,IAAA,YAAAA,IAAA,KACA,UAAAuJ,UAAA,uBAAAlB,OAAArI,GAAA,iCACAmkD,EAAApU,EAAA/vC,GACA,SAAAqkD,KAAA3zD,KAAAkB,YAAAm+C,CAAA,CACAA,EAAA55C,UAAA6J,IAAA,KAAAlP,OAAAuE,OAAA2K,IAAAqkD,GAAAluD,UAAA6J,EAAA7J,UAAA,IAAAkuD,GACA,EAEA/uC,EAAAxkB,OAAAmhB,QAAA,SAAA5S,GACA,QAAAyJ,EAAAZ,EAAA,EAAAyE,EAAAzJ,UAAA5O,OAAA4T,EAAAyE,EAAAzE,IAAA,CACAY,EAAA5F,UAAAgF,GACA,QAAAhS,KAAA4S,EAAA,GAAAhY,OAAAqF,UAAAC,eAAAC,KAAAyS,EAAA5S,GAAAmJ,EAAAnJ,GAAA4S,EAAA5S,EACA,CACA,OAAAmJ,CACA,EAEAkW,EAAA,SAAAzM,EAAAzV,GACA,IAAAgM,EAAA,GACA,QAAAnJ,KAAA4S,EAAA,GAAAhY,OAAAqF,UAAAC,eAAAC,KAAAyS,EAAA5S,IAAA7C,EAAAQ,QAAAqC,GAAA,EACAmJ,EAAAnJ,GAAA4S,EAAA5S,GACA,GAAA4S,GAAA,aAAAhY,OAAAmzC,wBAAA,WACA,QAAA/7B,EAAA,EAAAhS,EAAApF,OAAAmzC,sBAAAn7B,GAAAZ,EAAAhS,EAAA5B,OAAA4T,IAAA,CACA,GAAA7U,EAAAQ,QAAAqC,EAAAgS,IAAA,GAAApX,OAAAqF,UAAAmuD,qBAAAjuD,KAAAyS,EAAA5S,EAAAgS,IACA7I,EAAAnJ,EAAAgS,IAAAY,EAAA5S,EAAAgS,GACA,CACA,OAAA7I,CACA,EAEAmW,EAAA,SAAA+uC,EAAA7pC,EAAAtH,EAAAzd,GACA,IAAAsS,EAAA/E,UAAA5O,OAAA2C,EAAAgR,EAAA,EAAAyS,EAAA/kB,IAAA,KAAAA,EAAA7E,OAAA8E,yBAAA8kB,EAAAtH,GAAAzd,EAAAo6C,EACA,UAAAyU,UAAA,iBAAAA,QAAAC,WAAA,WAAAxtD,EAAAutD,QAAAC,SAAAF,EAAA7pC,EAAAtH,EAAAzd,QACA,QAAAuS,EAAAq8C,EAAAjwD,OAAA,EAAA4T,GAAA,EAAAA,IAAA,GAAA6nC,EAAAwU,EAAAr8C,GAAAjR,GAAAgR,EAAA,EAAA8nC,EAAA94C,GAAAgR,EAAA,EAAA8nC,EAAAr1B,EAAAtH,EAAAnc,GAAA84C,EAAAr1B,EAAAtH,KAAAnc,EACA,OAAAgR,EAAA,GAAAhR,GAAAnG,OAAAC,eAAA2pB,EAAAtH,EAAAnc,IACA,EAEAwe,EAAA,SAAAivC,EAAAC,GACA,gBAAAjqC,EAAAtH,GAAAuxC,EAAAjqC,EAAAtH,EAAAsxC,EAAA,CACA,EAEAhvC,EAAA,SAAAyI,EAAAymC,EAAAL,EAAAM,EAAAC,EAAAC,GACA,SAAAC,OAAAC,GAAA,GAAAA,SAAA,UAAAA,IAAA,qBAAA17C,UAAA,4BAAA07C,CAAA,CACA,IAAAC,EAAAL,EAAAK,KAAA9xC,EAAA8xC,IAAA,eAAAA,IAAA,uBACA,IAAAxqC,GAAAkqC,GAAAzmC,EAAA0mC,EAAA,UAAA1mC,IAAAhoB,UAAA,KACA,IAAAgvD,EAAAP,IAAAlqC,EAAA5pB,OAAA8E,yBAAA8kB,EAAAmqC,EAAA3wD,MAAA,IACA,IAAAg7B,EAAAk2B,EAAA,MACA,QAAAl9C,EAAAq8C,EAAAjwD,OAAA,EAAA4T,GAAA,EAAAA,IAAA,CACA,IAAAyU,EAAA,GACA,QAAAzmB,KAAA2uD,EAAAloC,EAAAzmB,OAAA,YAAA2uD,EAAA3uD,GACA,QAAAA,KAAA2uD,EAAAQ,OAAA1oC,EAAA0oC,OAAAnvD,GAAA2uD,EAAAQ,OAAAnvD,GACAymB,EAAA2oC,eAAA,SAAAL,GAAA,GAAAG,EAAA,UAAA77C,UAAA,0DAAAw7C,EAAAtoD,KAAAuoD,OAAAC,GAAA,QACA,IAAAhyD,GAAA,EAAAsxD,EAAAr8C,IAAAg9C,IAAA,YAAAlvD,IAAAmvD,EAAAnvD,IAAAnB,IAAAswD,EAAAtwD,KAAAswD,EAAA/xC,GAAAuJ,GACA,GAAAuoC,IAAA,YACA,GAAAjyD,SAAA,WACA,GAAAA,IAAA,aAAAA,IAAA,mBAAAsW,UAAA,mBACA,GAAA2lB,EAAA81B,OAAA/xD,EAAA+C,KAAAmvD,EAAAnvD,IAAAk5B,EACA,GAAAA,EAAA81B,OAAA/xD,EAAA4B,KAAAswD,EAAAtwD,IAAAq6B,EACA,GAAAA,EAAA81B,OAAA/xD,EAAAsyD,MAAAT,EAAAU,QAAAt2B,EACA,MACA,GAAAA,EAAA81B,OAAA/xD,GAAA,CACA,GAAAiyD,IAAA,QAAAJ,EAAAU,QAAAt2B,QACAi2B,EAAA/xC,GAAA8b,CACA,CACA,CACA,GAAAxU,EAAA5pB,OAAAC,eAAA2pB,EAAAmqC,EAAA3wD,KAAAixD,GACAC,EAAA,IACA,EAEAzvC,EAAA,SAAAqlB,EAAA8pB,EAAA7zD,GACA,IAAAw0D,EAAAviD,UAAA5O,OAAA,EACA,QAAA4T,EAAA,EAAAA,EAAA48C,EAAAxwD,OAAA4T,IAAA,CACAjX,EAAAw0D,EAAAX,EAAA58C,GAAA7R,KAAA2kC,EAAA/pC,GAAA6zD,EAAA58C,GAAA7R,KAAA2kC,EACA,CACA,OAAAyqB,EAAAx0D,OAAA,CACA,EAEA2kB,EAAA,SAAAxH,GACA,cAAAA,IAAA,SAAAA,EAAA,GAAAtO,OAAAsO,EACA,EAEAyH,EAAA,SAAAovC,EAAA/wD,EAAAwwB,GACA,UAAAxwB,IAAA,SAAAA,IAAAwxD,YAAA,IAAA5lD,OAAA5L,EAAAwxD,YAAA,QACA,OAAA50D,OAAAC,eAAAk0D,EAAA,QAAAnvD,aAAA,KAAA7E,MAAAyzB,EAAA,GAAA5kB,OAAA4kB,EAAA,IAAAxwB,MACA,EAEA4hB,EAAA,SAAA6vC,EAAAC,GACA,UAAApB,UAAA,iBAAAA,QAAAqB,WAAA,kBAAArB,QAAAqB,SAAAF,EAAAC,EACA,EAEA7vC,EAAA,SAAAilB,EAAAt4B,EAAAojD,EAAAC,GACA,SAAAC,MAAA/0D,GAAA,OAAAA,aAAA60D,EAAA70D,EAAA,IAAA60D,GAAA,SAAAryD,KAAAxC,EAAA,IACA,WAAA60D,MAAAtyD,WAAA,SAAAC,EAAAC,GACA,SAAAuyD,UAAAh1D,GAAA,IAAA2jD,KAAAmR,EAAAhc,KAAA94C,GAAA,OAAAoC,GAAAK,EAAAL,EAAA,EACA,SAAA6yD,SAAAj1D,GAAA,IAAA2jD,KAAAmR,EAAA,SAAA90D,GAAA,OAAAoC,GAAAK,EAAAL,EAAA,EACA,SAAAuhD,KAAA3hD,KAAAmyD,KAAA3xD,EAAAR,EAAAhC,OAAA+0D,MAAA/yD,EAAAhC,OAAAwhB,KAAAwzC,UAAAC,SAAA,CACAtR,MAAAmR,IAAAl8C,MAAAmxB,EAAAt4B,GAAA,KAAAqnC,OACA,GACA,EAEA/zB,EAAA,SAAAglB,EAAA5vB,GACA,IAAA8jB,EAAA,CAAAi3B,MAAA,EAAAC,KAAA,cAAA/mD,EAAA,WAAAA,EAAA,UAAAA,EAAA,IAAAgnD,KAAA,GAAAC,IAAA,IAAArB,EAAAr2C,EAAAvP,EAAA2P,EACA,OAAAA,EAAA,CAAA+6B,KAAAwc,KAAA,GAAAC,MAAAD,KAAA,GAAAE,OAAAF,KAAA,WAAAG,SAAA,aAAA13C,EAAA03C,OAAAC,UAAA,kBAAAj2D,IAAA,GAAAse,EACA,SAAAu3C,KAAA55C,GAAA,gBAAAlH,GAAA,OAAAmvC,KAAA,CAAAjoC,EAAAlH,GAAA,EACA,SAAAmvC,KAAAgS,GACA,GAAA3B,EAAA,UAAA17C,UAAA,mCACA,MAAAyF,MAAA,EAAA43C,EAAA,KAAA13B,EAAA,IAAAA,MACA,GAAA+1B,EAAA,EAAAr2C,IAAAvP,EAAAunD,EAAA,KAAAh4C,EAAA,UAAAg4C,EAAA,GAAAh4C,EAAA,YAAAvP,EAAAuP,EAAA,YAAAvP,EAAAhJ,KAAAuY,GAAA,GAAAA,EAAAm7B,SAAA1qC,IAAAhJ,KAAAuY,EAAAg4C,EAAA,KAAAxB,KAAA,OAAA/lD,EACA,GAAAuP,EAAA,EAAAvP,EAAAunD,EAAA,CAAAA,EAAA,KAAAvnD,EAAApO,OACA,OAAA21D,EAAA,IACA,cAAAvnD,EAAAunD,EAAA,MACA,OAAA13B,EAAAi3B,QAAA,OAAAl1D,MAAA21D,EAAA,GAAAxB,KAAA,OACA,OAAAl2B,EAAAi3B,QAAAv3C,EAAAg4C,EAAA,GAAAA,EAAA,aACA,OAAAA,EAAA13B,EAAAo3B,IAAAvxD,MAAAm6B,EAAAm3B,KAAAtxD,MAAA,SACA,QACA,KAAAsK,EAAA6vB,EAAAm3B,KAAAhnD,IAAA/K,OAAA,GAAA+K,IAAA/K,OAAA,MAAAsyD,EAAA,QAAAA,EAAA,SAAA13B,EAAA,WACA,GAAA03B,EAAA,UAAAvnD,GAAAunD,EAAA,GAAAvnD,EAAA,IAAAunD,EAAA,GAAAvnD,EAAA,KAAA6vB,EAAAi3B,MAAAS,EAAA,SACA,GAAAA,EAAA,QAAA13B,EAAAi3B,MAAA9mD,EAAA,IAAA6vB,EAAAi3B,MAAA9mD,EAAA,GAAAA,EAAAunD,EAAA,MACA,GAAAvnD,GAAA6vB,EAAAi3B,MAAA9mD,EAAA,IAAA6vB,EAAAi3B,MAAA9mD,EAAA,GAAA6vB,EAAAo3B,IAAA7pD,KAAAmqD,GAAA,MACA,GAAAvnD,EAAA,GAAA6vB,EAAAo3B,IAAAvxD,MACAm6B,EAAAm3B,KAAAtxD,MAAA,SAEA6xD,EAAAx7C,EAAA/U,KAAA2kC,EAAA9L,EACA,OAAA77B,GAAAuzD,EAAA,GAAAvzD,GAAAub,EAAA,UAAAq2C,EAAA5lD,EAAA,EACA,GAAAunD,EAAA,WAAAA,EAAA,UAAA31D,MAAA21D,EAAA,GAAAA,EAAA,UAAAxB,KAAA,KACA,CACA,EAEAnvD,EAAA,SAAAV,EAAAD,GACA,QAAAY,KAAAX,EAAA,GAAAW,IAAA,YAAApF,OAAAqF,UAAAC,eAAAC,KAAAf,EAAAY,GAAAd,EAAAE,EAAAC,EAAAW,EACA,EAEAd,EAAAtE,OAAAuE,OAAA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,GAAAA,IAAAC,UAAAD,EAAAD,EACA,IAAAG,EAAA7E,OAAA8E,yBAAAL,EAAAC,GACA,IAAAG,IAAA,QAAAA,GAAAJ,EAAA3E,WAAA+E,EAAAE,UAAAF,EAAAG,cAAA,CACAH,EAAA,CAAAI,WAAA,KAAAC,IAAA,kBAAAT,EAAAC,EAAA,EACA,CACA1E,OAAAC,eAAAuE,EAAAG,EAAAE,EACA,WAAAL,EAAAC,EAAAC,EAAAC,GACA,GAAAA,IAAAC,UAAAD,EAAAD,EACAF,EAAAG,GAAAF,EAAAC,EACA,EAEAygB,EAAA,SAAA3gB,GACA,IAAAwT,SAAA49C,SAAA,YAAAA,OAAAC,SAAApxD,EAAAuT,GAAAxT,EAAAwT,GAAAZ,EAAA,EACA,GAAA3S,EAAA,OAAAA,EAAAc,KAAAf,GACA,GAAAA,YAAAhB,SAAA,gBACAy1C,KAAA,WACA,GAAAz0C,GAAA4S,GAAA5S,EAAAhB,OAAAgB,OAAA,EACA,OAAArE,MAAAqE,KAAA4S,KAAAk9C,MAAA9vD,EACA,GAEA,UAAAiU,UAAAT,EAAA,4DACA,EAEAoN,EAAA,SAAA5gB,EAAAqX,GACA,IAAApX,SAAAmxD,SAAA,YAAApxD,EAAAoxD,OAAAC,UACA,IAAApxD,EAAA,OAAAD,EACA,IAAA4S,EAAA3S,EAAAc,KAAAf,GAAA2B,EAAA4vD,EAAA,GAAAxzD,EACA,IACA,OAAAsZ,SAAA,GAAAA,KAAA,MAAA1V,EAAAiR,EAAA6hC,QAAAqb,KAAAyB,EAAApqD,KAAAxF,EAAAhG,MACA,CACA,MAAAqC,GAAAD,EAAA,CAAAC,QAAA,CACA,QACA,IACA,GAAA2D,MAAAmuD,OAAA7vD,EAAA2S,EAAA,WAAA3S,EAAAc,KAAA6R,EACA,CACA,WAAA7U,EAAA,MAAAA,EAAAC,KAAA,CACA,CACA,OAAAuzD,CACA,EAGA1wC,EAAA,WACA,QAAA0wC,EAAA,GAAA3+C,EAAA,EAAAA,EAAAhF,UAAA5O,OAAA4T,IACA2+C,IAAA/mD,OAAAoW,EAAAhT,UAAAgF,KACA,OAAA2+C,CACA,EAGAzwC,EAAA,WACA,QAAAtN,EAAA,EAAAZ,EAAA,EAAA4+C,EAAA5jD,UAAA5O,OAAA4T,EAAA4+C,EAAA5+C,IAAAY,GAAA5F,UAAAgF,GAAA5T,OACA,QAAA2C,EAAA2I,MAAAkJ,GAAAtT,EAAA,EAAA0S,EAAA,EAAAA,EAAA4+C,EAAA5+C,IACA,QAAAH,EAAA7E,UAAAgF,GAAA6G,EAAA,EAAAg4C,EAAAh/C,EAAAzT,OAAAya,EAAAg4C,EAAAh4C,IAAAvZ,IACAyB,EAAAzB,GAAAuS,EAAAgH,GACA,OAAA9X,CACA,EAEAof,EAAA,SAAAm5B,EAAAvvC,EAAA+mD,GACA,GAAAA,GAAA9jD,UAAA5O,SAAA,UAAA4T,EAAA,EAAA0B,EAAA3J,EAAA3L,OAAAuyD,EAAA3+C,EAAA0B,EAAA1B,IAAA,CACA,GAAA2+C,KAAA3+C,KAAAjI,GAAA,CACA,IAAA4mD,IAAAjnD,MAAAzJ,UAAA0J,MAAAxJ,KAAA4J,EAAA,EAAAiI,GACA2+C,EAAA3+C,GAAAjI,EAAAiI,EACA,CACA,CACA,OAAAsnC,EAAA1vC,OAAA+mD,GAAAjnD,MAAAzJ,UAAA0J,MAAAxJ,KAAA4J,GACA,EAEAqW,EAAA,SAAA7Q,GACA,OAAA/U,gBAAA4lB,GAAA5lB,KAAA+U,IAAA/U,MAAA,IAAA4lB,EAAA7Q,EACA,EAEA8Q,EAAA,SAAAykB,EAAAt4B,EAAAqjD,GACA,IAAAW,OAAAO,cAAA,UAAA19C,UAAA,wCACA,IAAAyF,EAAA+2C,EAAAl8C,MAAAmxB,EAAAt4B,GAAA,IAAAwF,EAAAg/C,EAAA,GACA,OAAAh/C,EAAA,GAAAq+C,KAAA,QAAAA,KAAA,SAAAA,KAAA,SAAAY,aAAAj/C,EAAAw+C,OAAAO,eAAA,kBAAAv2D,IAAA,EAAAwX,EACA,SAAAi/C,YAAAlC,GAAA,gBAAAx/C,GAAA,OAAAjS,QAAAC,QAAAgS,GAAAgN,KAAAwyC,EAAAvxD,OAAA,EACA,SAAA6yD,KAAA55C,EAAAs4C,GAAA,GAAAj2C,EAAArC,GAAA,CAAAzE,EAAAyE,GAAA,SAAAlH,GAAA,WAAAjS,SAAA,SAAAuU,EAAA/H,GAAAknD,EAAAzqD,KAAA,CAAAkQ,EAAAlH,EAAAsC,EAAA/H,IAAA,GAAAonD,OAAAz6C,EAAAlH,EAAA,QAAAw/C,EAAA/8C,EAAAyE,GAAAs4C,EAAA/8C,EAAAyE,GAAA,EACA,SAAAy6C,OAAAz6C,EAAAlH,GAAA,IAAAmvC,KAAA5lC,EAAArC,GAAAlH,GAAA,OAAApS,GAAAg0D,OAAAH,EAAA,MAAA7zD,EAAA,EACA,SAAAuhD,KAAA39C,KAAAhG,iBAAAqlB,EAAA9iB,QAAAC,QAAAwD,EAAAhG,MAAAwU,GAAAgN,KAAA60C,QAAA5zD,QAAA2zD,OAAAH,EAAA,MAAAjwD,EAAA,CACA,SAAAqwD,QAAAr2D,GAAAm2D,OAAA,OAAAn2D,EAAA,CACA,SAAAyC,OAAAzC,GAAAm2D,OAAA,QAAAn2D,EAAA,CACA,SAAAo2D,OAAApC,EAAAx/C,GAAA,GAAAw/C,EAAAx/C,GAAAyhD,EAAA5tB,QAAA4tB,EAAA5yD,OAAA8yD,OAAAF,EAAA,MAAAA,EAAA,OACA,EAEA1wC,EAAA,SAAAlhB,GACA,IAAA4S,EAAAhS,EACA,OAAAgS,EAAA,GAAAq+C,KAAA,QAAAA,KAAA,kBAAAlzD,GAAA,MAAAA,CAAA,IAAAkzD,KAAA,UAAAr+C,EAAAw+C,OAAAC,UAAA,kBAAAj2D,IAAA,EAAAwX,EACA,SAAAq+C,KAAA55C,EAAAs4C,GAAA/8C,EAAAyE,GAAArX,EAAAqX,GAAA,SAAAlH,GAAA,OAAAvP,MAAA,CAAAjF,MAAAqlB,EAAAhhB,EAAAqX,GAAAlH,IAAA2/C,KAAA,OAAAH,IAAAx/C,IAAA,EAAAw/C,CAAA,CACA,EAEAxuC,EAAA,SAAAnhB,GACA,IAAAoxD,OAAAO,cAAA,UAAA19C,UAAA,wCACA,IAAAhU,EAAAD,EAAAoxD,OAAAO,eAAA/+C,EACA,OAAA3S,IAAAc,KAAAf,aAAA2gB,IAAA,WAAAA,EAAA3gB,KAAAoxD,OAAAC,YAAAz+C,EAAA,GAAAq+C,KAAA,QAAAA,KAAA,SAAAA,KAAA,UAAAr+C,EAAAw+C,OAAAO,eAAA,kBAAAv2D,IAAA,EAAAwX,GACA,SAAAq+C,KAAA55C,GAAAzE,EAAAyE,GAAArX,EAAAqX,IAAA,SAAAlH,GAAA,WAAAjS,SAAA,SAAAC,EAAAC,GAAA+R,EAAAnQ,EAAAqX,GAAAlH,GAAA4hD,OAAA5zD,EAAAC,EAAA+R,EAAA2/C,KAAA3/C,EAAAxU,MAAA,KACA,SAAAo2D,OAAA5zD,EAAAC,EAAAq8C,EAAAtqC,GAAAjS,QAAAC,QAAAgS,GAAAgN,MAAA,SAAAhN,GAAAhS,EAAA,CAAAxC,MAAAwU,EAAA2/C,KAAArV,GAAA,GAAAr8C,EAAA,CACA,EAEAgjB,EAAA,SAAA6wC,EAAA3rD,GACA,GAAA9K,OAAAC,eAAA,CAAAD,OAAAC,eAAAw2D,EAAA,OAAAt2D,MAAA2K,GAAA,MAAA2rD,EAAA3rD,KAAA,CACA,OAAA2rD,CACA,EAEA,IAAAC,EAAA12D,OAAAuE,OAAA,SAAAC,EAAAmQ,GACA3U,OAAAC,eAAAuE,EAAA,WAAAS,WAAA,KAAA9E,MAAAwU,GACA,WAAAnQ,EAAAmQ,GACAnQ,EAAA,WAAAmQ,CACA,EAEAkR,EAAA,SAAAhmB,GACA,GAAAA,KAAAC,WAAA,OAAAD,EACA,IAAAsC,EAAA,GACA,GAAAtC,GAAA,aAAA6E,KAAA7E,EAAA,GAAA6E,IAAA,WAAA1E,OAAAqF,UAAAC,eAAAC,KAAA1F,EAAA6E,GAAAJ,EAAAnC,EAAAtC,EAAA6E,GACAgyD,EAAAv0D,EAAAtC,GACA,OAAAsC,CACA,EAEAxC,EAAA,SAAAE,GACA,OAAAA,KAAAC,WAAAD,EAAA,CAAAE,QAAAF,EACA,EAEAimB,EAAA,SAAA6wC,EAAA10D,EAAAmyD,EAAAD,GACA,GAAAC,IAAA,MAAAD,EAAA,UAAA17C,UAAA,iDACA,UAAAxW,IAAA,WAAA00D,IAAA10D,IAAAkyD,GAAAlyD,EAAAu0B,IAAAmgC,GAAA,UAAAl+C,UAAA,4EACA,OAAA27C,IAAA,IAAAD,EAAAC,IAAA,IAAAD,EAAA5uD,KAAAoxD,GAAAxC,IAAAh0D,MAAA8B,EAAAiD,IAAAyxD,EACA,EAEA5wC,EAAA,SAAA4wC,EAAA10D,EAAA9B,EAAAi0D,EAAAD,GACA,GAAAC,IAAA,cAAA37C,UAAA,kCACA,GAAA27C,IAAA,MAAAD,EAAA,UAAA17C,UAAA,iDACA,UAAAxW,IAAA,WAAA00D,IAAA10D,IAAAkyD,GAAAlyD,EAAAu0B,IAAAmgC,GAAA,UAAAl+C,UAAA,2EACA,OAAA27C,IAAA,IAAAD,EAAA5uD,KAAAoxD,EAAAx2D,GAAAg0D,IAAAh0D,QAAA8B,EAAA8B,IAAA4yD,EAAAx2D,IACA,EAEA6lB,EAAA,SAAA/jB,EAAA00D,GACA,GAAAA,IAAA,aAAAA,IAAA,iBAAAA,IAAA,qBAAAl+C,UAAA,0CACA,cAAAxW,IAAA,WAAA00D,IAAA10D,IAAAu0B,IAAAmgC,EACA,EAEA1wC,EAAA,SAAAnG,EAAA3f,EAAAoB,GACA,GAAApB,IAAA,MAAAA,SAAA,GACA,UAAAA,IAAA,iBAAAA,IAAA,qBAAAsY,UAAA,oBACA,IAAAm+C,EAAAC,EACA,GAAAt1D,EAAA,CACA,IAAAq0D,OAAAkB,aAAA,UAAAr+C,UAAA,uCACAm+C,EAAAz2D,EAAAy1D,OAAAkB,aACA,CACA,GAAAF,SAAA,GACA,IAAAhB,OAAAgB,QAAA,UAAAn+C,UAAA,kCACAm+C,EAAAz2D,EAAAy1D,OAAAgB,SACA,GAAAr1D,EAAAs1D,EAAAD,CACA,CACA,UAAAA,IAAA,qBAAAn+C,UAAA,0BACA,GAAAo+C,EAAAD,EAAA,eAAAC,EAAAtxD,KAAA3F,KAAA,OAAA2C,GAAA,OAAAG,QAAAE,OAAAL,EAAA,GACAud,EAAAmiB,MAAAt2B,KAAA,CAAAxL,QAAAy2D,UAAAr1D,SACA,MACA,GAAAA,EAAA,CACAue,EAAAmiB,MAAAt2B,KAAA,CAAApK,MAAA,MACA,CACA,OAAApB,CACA,EAEA,IAAA42D,SAAAC,kBAAA,WAAAA,gBAAA,SAAAx0D,EAAAy0D,EAAA3hD,GACA,IAAA/S,EAAA,IAAA6I,MAAAkK,GACA,OAAA/S,EAAAa,KAAA,kBAAAb,EAAAC,QAAAD,EAAA00D,aAAA10D,CACA,EAEA2jB,EAAA,SAAApG,GACA,SAAAxd,KAAAC,GACAud,EAAAtd,MAAAsd,EAAAo3C,SAAA,IAAAH,EAAAx0D,EAAAud,EAAAtd,MAAA,4CAAAD,EACAud,EAAAo3C,SAAA,IACA,CACA,SAAAje,OACA,MAAAn5B,EAAAmiB,MAAAz+B,OAAA,CACA,IAAA2zD,EAAAr3C,EAAAmiB,MAAAh+B,MACA,IACA,IAAA9B,EAAAg1D,EAAAP,SAAAO,EAAAP,QAAArxD,KAAA4xD,EAAAh3D,OACA,GAAAg3D,EAAA51D,MAAA,OAAAmB,QAAAC,QAAAR,GAAAwf,KAAAs3B,MAAA,SAAA12C,GAAAD,KAAAC,GAAA,OAAA02C,MAAA,GACA,CACA,MAAA12C,GACAD,KAAAC,EACA,CACA,CACA,GAAAud,EAAAo3C,SAAA,MAAAp3C,EAAAtd,KACA,CACA,OAAAy2C,MACA,EAEAma,EAAA,YAAA7uC,GACA6uC,EAAA,WAAA5uC,GACA4uC,EAAA,SAAA3uC,GACA2uC,EAAA,aAAA1uC,GACA0uC,EAAA,UAAAzuC,GACAyuC,EAAA,eAAAxuC,GACAwuC,EAAA,oBAAAvuC,GACAuuC,EAAA,YAAAtuC,GACAsuC,EAAA,oBAAAruC,GACAquC,EAAA,aAAApuC,GACAouC,EAAA,YAAAnuC,GACAmuC,EAAA,cAAAluC,GACAkuC,EAAA,eAAAjuD,GACAiuD,EAAA,kBAAA9uD,GACA8uD,EAAA,WAAAjuC,GACAiuC,EAAA,SAAAhuC,GACAguC,EAAA,WAAA/tC,GACA+tC,EAAA,iBAAA9tC,GACA8tC,EAAA,gBAAA7tC,GACA6tC,EAAA,UAAA5tC,GACA4tC,EAAA,mBAAA3tC,GACA2tC,EAAA,mBAAA1tC,GACA0tC,EAAA,gBAAAztC,GACAytC,EAAA,uBAAAxtC,GACAwtC,EAAA,eAAAvtC,GACAutC,EAAA,kBAAAzzD,GACAyzD,EAAA,yBAAAttC,GACAstC,EAAA,yBAAArtC,GACAqtC,EAAA,wBAAAptC,GACAotC,EAAA,0BAAAntC,GACAmtC,EAAA,qBAAAltC,EACA,G,GCtaA,IAAAkxC,EAAA,GAGA,SAAA92D,oBAAA+2D,GAEA,IAAAC,EAAAF,EAAAC,GACA,GAAAC,IAAA1yD,UAAA,CACA,OAAA0yD,EAAAp3D,OACA,CAEA,IAAAokB,EAAA8yC,EAAAC,GAAA,CAGAn3D,QAAA,IAIA,IAAAq3D,EAAA,KACA,IACAC,EAAAH,GAAA9xD,KAAA+e,EAAApkB,QAAAokB,IAAApkB,QAAAI,qBACAi3D,EAAA,KACA,SACA,GAAAA,SAAAH,EAAAC,EACA,CAGA,OAAA/yC,EAAApkB,OACA,C,MC3BAI,oBAAA2+C,EAAA,CAAA/+C,EAAAu3D,KACA,QAAAn1C,KAAAm1C,EAAA,CACA,GAAAn3D,oBAAAkE,EAAAizD,EAAAn1C,KAAAhiB,oBAAAkE,EAAAtE,EAAAoiB,GAAA,CACAtiB,OAAAC,eAAAC,EAAAoiB,EAAA,CAAArd,WAAA,KAAAC,IAAAuyD,EAAAn1C,IACA,CACA,E,WCNAhiB,oBAAAkE,EAAA,CAAAowB,EAAAhI,IAAA5sB,OAAAqF,UAAAC,eAAAC,KAAAqvB,EAAAhI,E,WCCAtsB,oBAAA6F,EAAAjG,IACA,UAAA01D,SAAA,aAAAA,OAAA8B,YAAA,CACA13D,OAAAC,eAAAC,EAAA01D,OAAA8B,YAAA,CAAAv3D,MAAA,UACA,CACAH,OAAAC,eAAAC,EAAA,cAAAC,MAAA,O,KCJA,UAAAG,sBAAA,YAAAA,oBAAAq3D,GAAAC,UAAA,ICEA,IAAAC,EAAAv3D,oBAAA,K"}
|